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

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


สมมติว่า 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
  • ถ้า res mod 2 เหมือนกับ 0 แล้ว
    • ส่งคืน '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