मान लीजिए हमारे पास दो संख्याएं A और B हैं। अब प्रत्येक ऑपरेशन में, हम किसी एक संख्या को चुन सकते हैं और इसे 1 से बढ़ा सकते हैं या 1 से घटा सकते हैं। हमें न्यूनतम ऑपरेशनों की संख्या ढूंढनी है जिनकी आवश्यकता है ताकि A और B के बीच महत्तम समापवर्तक 1 न हो।
उदाहरण के लिए, यदि इनपुट A = 8, B = 9 है, तो आउटपुट 1 होगा, क्योंकि हम 9 चुन सकते हैं फिर इसे 10 तक बढ़ा सकते हैं, इसलिए 8 और 10 कोप्राइम नहीं हैं।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- यदि a और b का gcd 1 के समान नहीं है, तो
- 0 लौटाएं
- यदि a सम है या b सम है, तो
- 1 लौटाएं
- अन्यथा,
- यदि a + 1 और b का gcd 1 के समान नहीं है या a - 1 और b का gcd 1 के समान नहीं है या a और b - 1 का gcd 1 के समान नहीं है या a और b + 1 का gcd 1 के समान नहीं है, तो
- 1 लौटाएं
- अन्यथा,
- 2 लौटाएं
- यदि a + 1 और b का gcd 1 के समान नहीं है या a - 1 और b का gcd 1 के समान नहीं है या a और b - 1 का gcd 1 के समान नहीं है या a और b + 1 का gcd 1 के समान नहीं है, तो
बेहतर समझ के लिए निम्न कार्यान्वयन देखें
उदाहरण
from math import gcd class Solution: def solve(self, a, b): if gcd(a, b) != 1: return 0 if a % 2 == 0 or b % 2 == 0: return 1 else: if (gcd(a + 1, b) != 1 or gcd(a - 1, b) != 1 or gcd(a, b - 1) != 1 or gcd(a, b + 1) != 1): return 1 else: return 2 ob = Solution() A = 8 B = 9 print(ob.solve(A, B))
इनपुट
8,9
आउटपुट
1