演算法題 Nim遊戲(Python)
阿新 • • 發佈:2021-01-08
題目
給定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')