0
点赞
收藏
分享

微信扫一扫

小牛vs小客(博弈论)

小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1 2 3 4 取走 2 13 不算相邻)

输入描述:

输入包括多组测试数据
每组测试数据一个n(1≤n≤1e9)

输出描述:

每组用一行输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)

示例1

输入

2
3

输出

XiaoNiu
XiaoKe

题解:

首先,先手是小牛,如果n只有1,2时,小牛可以直接拿完;如果大于2,考虑三个的情况,小牛拿完一个就由环变成链了,并且一定是小客胜;四个也是;大于四个的时候小客都可以变成三个四个的情况。

/*Keep on going Never give up*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pi acos(-1.0)
inline int read()
{
    int x=0,k=1; char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')k=-1;c=getchar();}
    while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();
    return x*k;
}
const int maxn=1e5+10;
int n,m,vis[maxn],head[maxn],nxt[maxn],tot,ver[maxn];
bool f=0;
signed main(){
	while(cin>>n){
        if(n<=2)
         cout<<"XiaoNiu\n";
         else
         cout<<"XiaoKe\n";
      }
}
举报

相关推荐

0 条评论