*[hackerrank]Chocolate in Box

https://www.hackerrank.com/contests/w7/challenges/chocolate-in-box

Nim Game:http://www.cdf.toronto.edu/~ajr/270/probsess/03/strategy.html

策略是将数组变成XOR为0的(这样就对称了)。之后对方每做一步,可以证明总能找到一个方法己方也做一步能使XOR为0。这样最后会为0,获胜。

计算赢的方案数只要看一下数组里多少个数能够经过改变使得XOR为0.

#include <vector>
#include <iostream>

using namespace std;

int main() {
	int N;
	cin >> N;
	vector<int> vec;
	int r = 0;
	for (int i = 0; i < N; i++) {
		int t;
		cin >> t;
		vec.push_back(t);
		r ^= t;
	}
	int count = 0;
	for (int i = 0; i < N; i++) {
		if (vec[i] > (vec[i]^r))
			count++;
	}
	cout << count << endl;
    return 0;
}

  

posted @ 2014-08-12 18:17  阿牧遥  阅读(288)  评论(0编辑  收藏  举报