POJ_2975

    假设某堆石子有y个,其余的各堆石子的Nim和为x,由于x^x=0且x^k!=0(k!=x),所以只有当y>x时拿走y-x个石子才能使得整体的Nim和为0。

#include<stdio.h>
#include<string.h>
#define MAXD 1010
int N, a[MAXD];
void solve()
{
int i, j, k, ans = 0, cnt = 0;
for(i = 0; i < N; i ++)
{
scanf("%d", &a[i]);
ans ^= a[i];
}
for(i = 0; i < N; i ++)
if((ans ^ a[i]) < a[i])
++ cnt;
printf("%d\n", cnt);
}
int main()
{
for(;;)
{
scanf("%d", &N);
if(!N)
break;
solve();
}
return 0;
}


posted on 2012-03-09 23:19  Staginner  阅读(211)  评论(0编辑  收藏  举报