NC15065 小牛vs小客
题目
题目描述
小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1 2 3 4 取走 2 13 不算相邻)
输入描述
输入包括多组测试数据
每组测试数据一个n(1≤n≤1e9)
输出描述
每组用一行输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)
示例1
输入
2
3
输出
XiaoNiu
XiaoKe
题解
知识点:博弈论。
当 \(n\leq 2\) 时,先手必胜。
否则,后手在对称位置取和先手相同的即可。
时间复杂度 \(O(1)\)
空间复杂度 \(O(1)\)
代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
while (cin >> n) cout << (n <= 2 ? "XiaoNiu" : "XiaoKe") << '\n';
return 0;
}
本文来自博客园,作者:空白菌,转载请注明原文链接:https://www.cnblogs.com/BlankYang/p/17661163.html