程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA 11892 - ENimEN (簡單博弈)

UVA 11892 - ENimEN (簡單博弈)

編輯:C++入門知識

 


題意:有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的情況,其他都能根據已知條件推出先手必勝

 


AC代碼:

 

#include <iostream>   
#include <cstdio>   
#include <cstring>   
#include <string>   
#include <cstdlib>   
#include <cmath>   
#include <vector>   
#include <list>   
#include <deque>   
#include <queue>   
#include <iterator>   
#include <stack>   
#include <map>   
#include <set>   
#include <algorithm>   
#include <cctype>   
#include <ctime>   
using namespace std;  
  
typedef long long LL;  
const int N=100005;  
const int INF=0x3f3f3f3f;  
const double PI=acos(-1.0);  
  
int main()  
{  
    int i,T;  
    cin>>T;  
    while(T--)  
    {  
        int a,n,f=0;  
        scanf("%d",&n);  
        for(i=0;i<n;i++)  
        {  
            scanf("%d",&a);  
            if(a!=1)  
                f=1;  
        }  
        if(f==0&&n%2==0)  
            puts("piloop");  
        else  
            puts("poopi");  
    }  
    return 0;  
}  

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <list>
#include <deque>
#include <queue>
#include <iterator>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <cctype>
#include <ctime>
using namespace std;

typedef long long LL;
const int N=100005;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);

int main()
{
    int i,T;
    cin>>T;
    while(T--)
    {
        int a,n,f=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a);
            if(a!=1)
                f=1;
        }
        if(f==0&&n%2==0)
            puts("piloop");
        else
            puts("poopi");
    }
    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved