POJ 2975 Nim 尼姆博弈

时间:2021-09-18 15:50:08

题目大意:尼姆博弈,求先手必胜的情况数

题目思路:判断 ans=(a[1]^a[2]……^a[n]),求ans^a[i] < a[i]的个数。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
#include<queue>
#include<math.h>
#include<map>
#define INF 0x3f3f3f3f
#define MAX 1005
#define Temp 1000000000 using namespace std; int a[MAX]; int main()
{
int n,m,ans,cnt;
while(scanf("%d",&n),n)
{
cnt=;
ans=;
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
ans^=a[i];
}
for(int i=;i<=n;i++)
{
if((ans^a[i])< a[i])
cnt++;
}
printf("%d\n",cnt);
}
return ;
}