uva 11892 ENimEN 简单博弈

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int i,flag=0,a,n;
        cin>>n;
        for(i=0;i<n;i++)
        {
            cin>>a;
            if(a!=1)
                flag=1;
        }
        if(flag==0&&n%2==0)
            cout<<"piloop"<<endl;
        else
            cout<<"poopi"<<endl;
    }
    return 0;
}
/*
    有n堆石子,每堆的个数为ai,每次可以取一堆中任意非0个数石子,取到最后石子为胜。
    新增条件是:每个人只能在对手最后取过的堆里取,除非对手把堆取完
    
    简单的推理,先考虑1~n堆,每堆都是1
    1 先,1 1后,1 1 1先,1 1 1 1后,。。。如此交替
    再推倒出现非1的情况,非1数设为x
    x先,
    1 x->1 1先,x x->1 x->x先
    1 1 x->1 1先,1 x x->1 x 1->1 x先,x x x->x x 1->x x先
    。。。
    可发现除了全是1的情况,其他都能根据已知条件推出先手必胜
*/

你可能感兴趣的:(简单博弈)