Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาผู้ชนะเกมลดตัวเลขเป็นกำลังของ 2 ใน Python

อมลและบิมลเล่นกับตัวเลข n: หาก n เป็นกำลังของ 2 ให้หาร 2 มิฉะนั้นลบด้วยกำลังของ 2 ที่ใกล้ที่สุดและน้อยกว่า n ผู้ที่ลด n เป็น 1 ชนะ อมลเล่นก่อน หาผู้ชนะ

ตัวอย่าง: n=19 → Amal ชนะ (19→16→8→4→2→1)

ขั้นตอนการแก้ปัญหา

  1. นับจำนวนรอบการเล่น res:
  2. วนลูปจนกว่า n=1:
    • หา b = กำลังของ 2 ที่มากที่สุดและ < n
    • n -= b, res += 1
  3. หาก 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