http://poj.org/problem?id=2975
Nim博弈;
求必胜时总数
// File Name: poj2975.cpp
// Author: bo_jwolf
// Created Time: 2013年10月01日 星期二 21:51:44
#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
const int maxn = 100005;
int main(){
long long Case, n, ans, sum, num[ maxn ];
while( scanf( "%lld", &n ) != EOF && n ){
ans = 0;
for( long long i = 1; i <= n; ++i ){
scanf( "%lld", &num[ i ] );
ans ^= num[ i ];
}
sum = 0 ;
for( long long i = 1; i <= n; ++i ){
if( ( ans ^ num[ i ] )<= num[ i ] )
sum++;
}
if( ans == 0 )
sum = 0 ;
printf( "%lld\n", sum );
}
return 0;
}