ধরুন অমল আর বিমল একটা খেলা খেলছে। তাদের একটি সংখ্যা n আছে এবং তারা পরীক্ষা করে যে এটি 2 এর শক্তি কিনা। যদি এটি হয়, তারা এটিকে 2 দ্বারা ভাগ করে। অন্যথায়, তারা এটিকে পরবর্তী নিম্ন সংখ্যা দ্বারা কমিয়ে দেয় যা 2 এর পাওয়ারও। অমল সবসময় খেলা শুরু করে, তারপর আমাদের বিজয়ীর নাম খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি n =19 এর মত হয়, তবে আউটপুটটি হবে Amal কারণ, 19 2 এর শক্তি নয়, তাই Amal এটিকে 16-এ কমিয়ে দেয়, তারপর বিমল 2 দিয়ে ভাগ করে 8 করে, তারপর আবার Amal 2 দ্বারা ভাগ করে। 4, তারপর বিমল এটিকে 2 করে এবং অবশেষে অমল এটিকে 1 করতে ভাগ করে এবং গেমটি জিতে নেয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=0
- যখন n> 1, do
- b :=1
- যখন b * 2
- b :=b * 2
- n :=n - b
- res :=res + 1
- 'আমল' ফেরত দিন
- 'Bmal' ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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