Nim

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;
}

你可能感兴趣的:(Nim)