สมมติว่า Amal และ Bimal กำลังเล่นเกม พวกเขามีตัวเลข n และพวกเขาตรวจสอบว่ามันเป็นกำลัง 2 หรือไม่ ถ้าใช่จะหารด้วย 2 ไม่เช่นนั้นจะลดด้วยเลขล่างถัดไปซึ่งเป็นกำลัง 2 ใครก็ตามที่ลดจำนวนลงเหลือ 1 จะชนะเกม Amal เริ่มเกมเสมอ จากนั้นเราต้องหาชื่อผู้ชนะ
ดังนั้น หากอินพุตเป็นเหมือน n =19 เอาต์พุตจะเป็น Amal เพราะ 19 ไม่ใช่กำลังของ 2 ดังนั้น Amal จึงลดเหลือ 16 จากนั้น Bimal หารด้วย 2 เพื่อให้ได้ 8 จากนั้น Amal หารด้วย 2 อีกครั้งเพื่อให้ได้ 4 จากนั้น Bimal ทำให้เป็น 2 และสุดท้าย Amal แบ่งเพื่อให้เป็น 1 และชนะเกม
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- res :=0
- ในขณะที่ n> 1 ทำ
- b :=1
- ในขณะที่ b * 2
- b :=b * 2
- n :=n - b
- res :=res + 1
- ส่งคืน 'Amal'
- ส่งคืน '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