题目:hdu1850
题意:nim游戏求先手第一步走的方法
解决:先处理出所有数抑或的值。然后再跟每个数分别抑或(抑或了两遍相当于没有抑或)。如果得出来的值比这个数小。就可以
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 110;
int a[MAXN];
int n;
int main()
{
while(~scanf("%d",&n)&&n)
{
int t = 0;
for(int i = 0;i < n;i++)
{
scanf("%d",&a[i]);
t ^= a[i];
}
int ans = 0;
if(t != 0){
for(int i = 0;i < n;i++)
{
int tmp = t ^ a[i];
if(tmp < a[i])
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}