मान लीजिए अमल और बिमल एक गेम खेल रहे हैं। उनके पास एक संख्या n है और वे जांचते हैं कि यह 2 की घात है या नहीं। यदि यह है, तो वे इसे 2 से विभाजित करते हैं। अन्यथा, वे इसे अगली निचली संख्या से घटाते हैं जो 2 की घात भी है। जो भी संख्या को 1 तक घटाता है वह गेम जीत जाएगा। अमल हमेशा गेम शुरू करता है, फिर हमें विजेता का नाम खोजना है।
तो, यदि इनपुट n = 19 है, तो आउटपुट अमल होगा क्योंकि, 19, 2 की घात नहीं है, इसलिए अमल इसे 16 तक घटाता है, फिर बिमल 2 से विभाजित करके 8 बनाता है, फिर अमल फिर से 2 से विभाजित करके 4 प्राप्त करता है, फिर बिमल इसे 2 बनाता है और अंत में अमल इसे विभाजित करके 1 बनाता है और गेम जीत जाता है।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- res := 0
- जब तक n > 1, करें
- b := 1
- जब तक b * 2 < n, करें
- b := b * 2
- n := n - b
- res := res + 1
- यदि res mod 2, 0 के समान है, तो
- 'अमल' लौटाएं
- अन्यथा,
- 'बिमल' लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(n): res = 0 while(n > 1): b = 1 while(b * 2 < n): b *= 2 n -= b res += 1 if res % 2 == 0: return 'Amal' else: return 'Bmal' n = 19 print(solve(n))
इनपुट
19
आउटपुट
Amal