下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。
现在我们不想研究到底先手为胜还是为负,我只想问大家:
——“先手的人如果想赢,第一步有几种选择呢?”
#include<iostream>
#include<cstdio>using namespace std;
const int N = 105;
int main()
{
int n, sum;
int a[N];
int Count;
while(scanf("%d", &n), n!=0)
{
sum = 0, Count = 0;
for(int i = 0; i<n;i++)
{
scanf("%d", &a[i]);
sum^=a[i];
}
int s = sum;
for(int i = 0; i<n;i++)
{
s = sum^a[i];
if(s<a[i])
Count++;
}
printf("%d\n", Count);
}
return 0;
}