Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm người chiến thắng trò chơi giảm số bằng Python

Giả sử Amal và Bimal đang chơi một trò chơi. Họ có một số n và họ kiểm tra xem nó có phải là lũy thừa của 2 hay không. Nếu đúng, họ chia nó cho 2. ngược lại, họ giảm nó cho số thấp hơn tiếp theo cũng là lũy thừa của 2. Ai giảm số xuống 1 sẽ thắng trò chơi. Amal luôn bắt đầu trò chơi, sau đó chúng ta phải tìm ra tên của người chiến thắng.

Vì vậy, nếu đầu vào là n =19, thì đầu ra sẽ là Amal vì 19 không phải là lũy thừa của 2, vì vậy Amal giảm nó xuống 16, sau đó Bimal chia cho 2 để tạo ra 8, sau đó một lần nữa Amal chia cho 2 để có được 4, sau đó Bimal tạo thành 2 và cuối cùng Amal chia thành 1 và thắng trò chơi.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • res:=0
  • while n> 1, do
    • b:=1
    • while b * 2
    • b:=b * 2
  • n:=n - b
  • res:=res + 1
  • nếu res mod 2 giống 0, thì
    • trả về 'Amal'
  • nếu không,
    • trả về 'Bmal'
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    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))

    Đầu vào

    19
    

    Đầu ra

    Amal