题目是说有n堆石子,每次你能从其中的一堆取出至少为1个石头,当最后没有石头可以取则为输,让你判断玩这个游戏是否能赢。
其实这个题就是尼姆博弈(Nim Game),其中有一个结论,只有当各堆石子的异或运算结果为0的时候才是必输,否则都为必胜,有了这个结论其他的就比较简单了
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int val,ans;
scanf("%d",&ans);
for(int i=1;i<n;i++)
{
scanf("%d",&val);
ans^=val;
}
if(!ans)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}