(根据891 Nim的证明,可以推出893这道题的证明)
本题证明:
# acwing 893. 集合-Nim游戏
N, M = 110, 10010
def sg(x):
if f[x]!=-1: return f[x]
S = set()
for i in range(k):
if x>=s[i]: S.add(sg(x-s[i]))
i = 0
while True:
if i not in S:
f[x] = i
return i
else: i+=1
if __name__ == '__main__':
k = int(input())
s = [int(x) for x in input().split()]
n = int(input())
h, f = [int(x) for x in input().split()], [-1]*M
res = 0
for i in range(n):
res ^= sg(h[i])
if res: print('Yes')
else: print('No')
🐂🅱
orz