Python程式:查詢數字遞減遊戲中獲勝者


假設阿馬爾和比馬爾正在玩一個遊戲。他們有一個數字n,他們檢查它是否為2的冪。如果是,他們將其除以2。否則,他們將其減去下一個較小的也是2的冪的數字。誰將數字減少到1,誰就贏得遊戲。阿馬爾總是先開始遊戲,然後我們必須找到獲勝者的姓名。

所以,如果輸入像n = 19,那麼輸出將是阿馬爾,因為19不是2的冪,所以阿馬爾將其減少到16,然後比馬爾除以2得到8,然後阿馬爾再次除以2得到4,然後比馬爾將其變為2,最後阿馬爾除以2得到1並贏得遊戲。

為了解決這個問題,我們將遵循以下步驟:

  • res := 0
  • 當 n > 1 時,執行以下操作
    • b := 1
    • 當 b * 2 < n 時,執行以下操作
      • b := b * 2
    • n := n - b
    • res := res + 1
  • 如果 res 模 2 等於 0,則
    • 返回 '阿馬爾'
  • 否則,
    • 返回 '比馬爾'

示例

讓我們看看下面的實現,以便更好地理解:

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

更新於: 2021年10月23日

160 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告