मान लीजिए अमल और बिमल एक खेल खेल रहे हैं। उनके पास एक संख्या n है और वे जांचते हैं कि यह 2 की शक्ति है या नहीं। यदि ऐसा है, तो वे इसे 2 से विभाजित करते हैं। अन्यथा, वे इसे अगली निचली संख्या से कम कर देते हैं जो कि 2 की शक्ति भी है। जो कोई भी संख्या को घटाकर 1 कर देगा वह गेम जीत जाएगा। अमल हमेशा खेल शुरू करता है, फिर हमें विजेता का नाम ढूंढना होता है।
इसलिए, यदि इनपुट n =19 की तरह है, तो आउटपुट अमल होगा क्योंकि, 19 2 की शक्ति नहीं है, इसलिए अमल इसे घटाकर 16 कर देता है, फिर बिमल को 2 से विभाजित करके 8 बना देता है, फिर अमल को प्राप्त करने के लिए 2 से विभाजित करता है। 4, फिर बिमल ने इसे 2 बनाया और अंत में अमल ने इसे 1 बनाने के लिए विभाजित किया और गेम जीत लिया।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res :=0
- जबकि n> 1, करो
- b :=1
- जबकि बी * 2 <एन, करते हैं
- b :=b * 2
- n :=n - b
- रेस :=रेस + 1
- यदि रेस मोड 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