题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850
尼姆博弈,详见:http://blog.csdn.net/qust1508060414/article/details/52194676
有了尼姆博弈的知识,代码就简单多了。
一个关于亦或运算的知识:(a^b)^a == b,(a^b)^b == a。
#include<cstdio>
using namespace std;
int main()
{
int n;
while (scanf("%d",&n) && n)
{
int a[110] = {0};
int buf = 0;
for (int i=0; i<n; i++)
{
scanf("%d",&a[i]);
buf ^= a[i];
}
if (buf == 0)
{
printf("0\n");
continue;
}
int cnt = 0;
for (int i=0; i<n; i++)
if (a[i] >= (buf^a[i])) cnt++;
printf("%d\n",cnt);
}
return 0;
}