POJ1740

来源:互联网 发布:简便算法公式 编辑:程序博客网 时间:2024/06/02 01:15

这题想了好久都没想出来 然后在网上搜的题解 终于明白了。。。 

当为1堆的时候 先手为必胜态 

当为2堆并且两堆都相同时 先手怎么走后手怎么走就行了

当为3堆 先手只要一次拿成两堆且相同 的情况就是必胜态

4堆的时候只要看排序后 两堆 两堆是否相同就行了 

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;bool f[1005];int main(){    int n;    while (scanf("%d", &n)&& n)    {        memset(f, 0, sizeof(f));        int ans = 0;        for (int i = 0; i < n; i++)        {            int a;            scanf("%d", &a);            if (f[a])                ans--;            else                ans++;            f[a] = !f[a];        }        if (ans)            printf("1\n");        else            printf("0\n");    }    return 0;}