题解:
如果所有牌的亦或和为0,必输。想赢必须亦或和大于0,亦或完之后如果大于零,要是让对手输必须拿走一些牌使得剩余牌亦或结果为0,如果一个数字比除这个数字之外的数字的亦或值大,则情况就+1,举个例子,比如5,7,9这个例子,只有9大于5和7的亦或值,所以结果就为1.
#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
#include<cmath>
#define LL long long int
using namespace std;
int main()
{
int m,a[105];
while(~scanf("%d",&m)&&m)
{
int sum = 0,cnt = 0;
for(int i = 0 ; i < m ; i++)
{
scanf("%d",&a[i]);
sum^=a[i];
}
for(int i = 0 ; i < m ; i++)
{
if(a[i]>(sum^a[i]))
cnt++;
}
if(sum)
cout<<cnt<<endl;
else
cout<<0<<endl;
}
return 0;
}