博弈-51nod

目錄

1066 Bash遊戲-巴什

1069 Nim遊戲-尼姆

1072 威佐夫遊戲-威佐夫

1185 威佐夫遊戲V2-威佐夫,高精度

1067 Bash遊戲V2-PN分析

1068 Bash遊戲V3-PN分析

1534 棋子游戲-水

1070 Bash遊戲V4-PN分析

1831 小C的遊戲-PN分析

1066 Bash遊戲-巴什

回目錄

#include<iostream>
using namespace std;
int main()
{
    int T,n,m;
    cin>>T;
    while(T--){
        cin>>n>>m;
        if(n%(m+1)==0)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1069 Nim遊戲-尼姆

回目錄

#include<iostream>
using namespace std;
int main()
{
    int n,a,ans=0;
    cin>>n;
    while(n--){
        cin>>a;
        ans^=a;
    }
    if(ans)cout<<"A"<<endl;
    else cout<<"B"<<endl;
    return 0;
}

1072 威佐夫遊戲-威佐夫

回目錄

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
    int T,n,m;
    cin>>T;
    while(T--){
        cin>>n>>m;
        if(n>m)swap(n,m);
        int k=(m-n)*(1+sqrt(5.0))/2;
        if(k==n)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1185 威佐夫遊戲V2-威佐夫,高精度

回目錄

#include<iostream>
#include<algorithm>
#include<cmath>
typedef long long LL;
using namespace std;
LL a[4]={0,618033988,749894848,204586834};
const LL mod=1e9;
int main()
{
    LL T,n,m;
    cin>>T;
    while(T--){
        cin>>n>>m;
        if(n>m)swap(n,m);
        LL k=m-n;
        LL g=k%mod;
        LL s=k/mod;
        LL ans=g*a[3];
        ans=g*a[2]+s*a[3]+ans/mod;
        ans=g*a[1]+s*a[2]+ans/mod;
        ans=s*a[1]+ans/mod;
        ans+=k;
        if(ans==n)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1067 Bash遊戲V2-PN分析

回目錄

#include<iostream>
using namespace std;
int main()
{
    int T,n;
    cin>>T;
    while(T--){
        cin>>n;
        if(n%7==2||n%7==0)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1068 Bash遊戲V3-PN分析

回目錄

#include<iostream>
#include<cstring>
using namespace std;
char str[1111];
int main()
{
    int T,sum;
    cin>>T;
    while(T--){
        sum=0;
        cin>>str;
        for(int i=0;i<strlen(str);++i)sum+=str[i]-'0';
        if(sum%3==0)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1534 棋子游戲-水

回目錄

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    if(x1<=x2&&y1<=y2)cout<<"Polycarp"<<endl;
    else if(x2>x1&&y2>y1)cout<<"Vasiliy"<<endl;
    else{
        if(x1+y1<=max(x2,y2))cout<<"Polycarp"<<endl;
        else cout<<"Vasiliy"<<endl;
    }
    return 0;
}

1070 Bash遊戲V4-PN分析

回目錄

#include<iostream>
#include<algorithm>
using namespace std;
int f[66];
int main()
{
    int m;
    f[1]=1;
    f[2]=2;
    for(int i=3;i<=44;++i)f[i]=f[i-1]+f[i-2];
    int T,n;
    cin>>T;
    while(T--){
        cin>>n;
        int flag=0;
        for(int i=1;i<=44;++i)
            if(n==f[i]){
                flag=1;
                break;
            }
        if(flag)cout<<"B"<<endl;
        else cout<<"A"<<endl;
    }
    return 0;
}

1831 小C的遊戲-PN分析

回目錄

#include<iostream>
#include<cstring>
using namespace std;
bool judge(int n)
{
    if(n==1)return false;
    for(int i=2;i*i<=n;++i)
        if(n%i==0)return false;
    return true;
}
/*const int N=1e3+9;
bool vis[N];
void get()// PN分析打表
{
    memset(vis,true,sizeof(vis));
    vis[1]=vis[3]=false;
    for(int i=4;i<N;++i){
        if(vis[i-1]){
            int flag=0;
            for(int j=2;j*2<=i;++j)
                if(i%j==0&&!vis[i/j]){
                    flag=1;
                    break;
                }
            if(!flag)vis[i]=false;
        }
    }
    for(int i=1;i<1000;++i)if((!judge(i)&&!vis[i])||(judge(i)&&vis[i]))cout<<i<<" "<<vis[i]<<endl;
}*/
int main()
{
    //get();
    int T,n;
    cin>>T;
    while(T--){
        cin>>n;
        if(judge(n)){
            if(n==2||n==17)cout<<"TAK"<<endl;
            else cout<<"NIE"<<endl;
        }
        else{
            if(n==1||n==16||n==34||n==289)cout<<"NIE"<<endl;
            else cout<<"TAK"<<endl;
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章