Nim博弈问题,因为Nim博弈第一步要转化至必败态
设 s=a1 ^ a2 ^ a3 ^ a4 ^ ...... an,那么只需要把 ak 换为 ak^s 即可,当然 前者必须要大
因为 s=a1 ^ a2 ^ a3 ^ a4 ^ ak ^ s ^ .......an=a1^a2^a3^......an ^ s = s^s=0; 所以转为了必败态
code:
#include <map>
#include <cstring>
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[101];
int main()
{
int t,temp,sum;
while(~scanf("%d",&t)&&t)
{
sum=temp=0;
for(int i=1;i<=t;i++)
{
scanf(" %d",&a[i]);
temp=temp^a[i];
}
for(int i=1;i<=t;i++)
{
if(a[i]>(temp^a[i]))
sum++;
}
printf("%d\n",sum);
}
return 0;
}