Fate_O的专栏

Let’s Go!!!

poj2975 Nim

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

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

Source Code

Problem: 2975		User: 455707843
Memory: 756K		Time: 391MS
Language: G++		Result: Accepted
Source Code
#include <iostream>

using namespace std;

#define oo (~0U >> 1)
#define MAXN 1000 + 10

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


阅读更多
个人分类: ACM->POJ
想对作者说点什么? 我来说一句

POJ2975 Nim

Nim

a1799342217 a1799342217

2017-10-16 17:44:42

阅读数:156

没有更多推荐了,返回首页

不良信息举报

poj2975 Nim

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭