1049 小牛vs小客 博弈论-对称
链接:https://ac.nowcoder.com/acm/contest/26656/1049
来源:牛客网
题目描述
小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1 2 3 4 取走 2 13 不算相邻)
输入描述:
输入包括多组测试数据
每组测试数据一个n(1≤n≤1e9)
输出描述:
每组用一行输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)
分析
博弈论经典题,考虑对称性,当n >= 3 的时候,后手只要和先手对称就可以了。
奇数的时候也可以对称,可以考虑 3 和 5
//-------------------------代码---------------------------- //#define int ll const int N = 1e5+10; int n,m; void solve() { while(cin>>n) { if(n < 3) { cout<<"XiaoNiu"<<endl; } else { cout<<"XiaoKe"<<endl; } } } signed main(){ clapping();TLE; // int t;cin>>t;while(t -- ) solve(); // {solve(); } return 0; } /*样例区 */ //------------------------------------------------------------