/*
Nim游戏,首先求出sg异或和的值。
如果是胜,判断每堆石块通过变化个数能够达到败态。计数就可以了
*/
#include <cstdio>
int N,A[1010],ans;
int main()
{
while(scanf("%d",&N)==1)
{
if(!N) break;
ans = 0;
for(int i=0;i<N;i++)
{
scanf("%d",&A[i]);ans^=A[i];
}
int cnt=0;
if(ans) for(int i=0;i<N;i++)
{
if( A[i]>= (ans^A[i])) cnt++;
}
printf("%d\n",cnt);
}
return 0;
}
转载于:https://www.cnblogs.com/ac2012/archive/2011/06/16/2082261.html