อมลและบิมลเล่นกับตัวเลข n: หาก n เป็นกำลังของ 2 ให้หาร 2 มิฉะนั้นลบด้วยกำลังของ 2 ที่ใกล้ที่สุดและน้อยกว่า n ผู้ที่ลด n เป็น 1 ชนะ อมลเล่นก่อน หาผู้ชนะ
ตัวอย่าง: n=19 → Amal ชนะ (19→16→8→4→2→1)
ขั้นตอนการแก้ปัญหา
- นับจำนวนรอบการเล่น
res: - วนลูปจนกว่า n=1:
- หา
b= กำลังของ 2 ที่มากที่สุดและ < n n -= b,res += 1
- หา
- หาก res คู่ → Amal ชนะ มิฉะนั้น Bmal ชนะ
ตัวอย่างโค้ด Python
def solve(n):
res = 0
while n > 1:
b = 1
while b * 2 < n:
b *= 2
n -= b
res += 1
return 'Amal' if res % 2 == 0 else 'Bmal'
# ทดสอบ
n = 19
print(solve(n)) # ผลลัพธ์: Amal
อินพุตตัวอย่าง
19
เอาต์พุตตัวอย่าง
Amal