मान लीजिए अमल और बिमल एक खेल खेल रहे हैं। उनके पास एक संख्या 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