poj2975 Nim

来源:互联网 发布:ubuntu find 子目录 编辑:程序博客网 时间:2024/06/07 03:47

Nim博弈,问有多少种胜利的方法,

因为答案最多只有n,令ans=a1^a2^...^an,如果需要构造出异或值为0的数,
而且由于只能操作一堆石子,所以对于某堆石子ai,现在对于ans^ai,就是除了ai以外其他的石子
的异或值,如果ans^ai< ai,那么对于ai的话,是可以减小到ans^ai的值。将结果统计。

Source CodeProblem: 2975User: 455707843Memory: 756KTime: 391MSLanguage: G++Result: AcceptedSource Code#include <iostream>using namespace std;#define oo (~0U >> 1)#define MAXN 1000 + 10int temp[MAXN];void input(){    int n;    while (cin >> n, n)    {        int sum = 0;        for (int i = 0; i < n; i++)        {            cin >> temp[i];            sum ^= temp[i];        }        if (!sum)        {            cout << 0 << endl;        }        else        {            int ans = 0;            for (int i = 0; i < n; i++)            {                if ((sum ^ temp[i]) < temp[i])                {                    ans++;                }            }            cout << ans << endl;        }    }}int main(){    input();    return 0;}


原创粉丝点击