博弈题如果知道其中的原理,结论很容ac
#include"stdio.h"
#include"string.h"
int a[60000];
int main()
{
int num1,num2,m,ans,i;
while(scanf("%d",&m)!=EOF)
{
num1=0;//计算充裕堆数《大于1》
num2=0;//计算孤单堆。(等于1)
ans=0;//异或用来判断是否是奇异局势
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
if(a[i]>=2)
num1++;
else
num2++;
ans=ans^a[i];
}
if(ans==0&&num1==0||ans!=0&&num1!=0)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}