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
廣告