1. 程式人生 > 其它 >演算法題 Nim遊戲(Python)

演算法題 Nim遊戲(Python)

技術標籤:Python演算法題python演算法博弈論

題目

給定n堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子(可以拿完,但不能不拿),最後無法進行操作的人視為失敗。

問如果兩人都採用最優策略,先手是否必勝。

輸入格式

第一行包含整數n。

第二行包含n個數字,其中第i個數字表示第i堆石子的數量。

輸出格式

如果先手方必勝,則輸出“Yes”。

否則,輸出“No”。

資料範圍

1≤n≤10^5,
1≤每堆石子數≤10^9

輸入樣例:

2
2 3

輸出樣例:

Yes

程式碼

異或為0必輸,不為0必勝

n = int(input())
nums = list(map(int, input().split()))

res = 0
for num in nums:
    res ^= num
if res == 0: print('No')
else: print('Yes')