//简单直接的博弈论问题,两个人分别取n堆石子,谁取到最后一颗谁赢,SG(x)=x,直接异或即可
#include<stdio.h>
#define maxn 20+10
int m;
long number[maxn];
int find_sg(int x)//SG函数
{
return x;
}
int main()
{
while(scanf("%d",&m)!=EOF)
{
for(int i=1;i<=m;i++)
scanf("%ld",&number[i]);
int ans;
if(m==1)
ans=1;
else
{
ans=find_sg(number[1])^find_sg(number[2]);
for(int i=3;i<=m;i++)
ans=ans^find_sg(number[i]);
}
if(ans==0)//若异或值为0,先手必败
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
POJ 2234 Matches Game(直接的NIM)
最新推荐文章于 2021-09-10 16:32:18 发布