D——取石子(博弈)
链接:https://www.nowcoder.net/acm/contest/75/D
来源:牛客网
取石子问题:http://blog.csdn.net/acmlzq/article/details/51212297
题目描述
小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1 2 3 4 取走 2 13 不算相邻)
输入描述:
输入包括多组测试数据
每组测试数据一个n(1≤n≤1e9)
输出描述:
每组用一行输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)
示例1
输入
2 3
输出
XiaoNiu XiaoKe
题意:当石子数是是奇数时XiaoNiu先取一个,然后XiaoNiu跟着XiaoKe取,XiaoKe取几个,XiaoNiu就取几个,这样最后XiaoNiu
就可以赢当石子数是偶数时XiaoNiu先取2个,然后XiaoNiu跟着XiaoKe取,XiaoKe取几个,XiaoNiu就取几个,这样最后XiaoNiu就
可以赢。
1 #include<iostream>
2 #include<bits/stdc++.h>
3 #define _f(x,y,z) for(int (x)=(y);(x)<=(z);(x)++)
4 #define __f(x,y,z) for(int (x)=(y);(x)>=(z);(x)--)
5 using namespace std;
6 int main(){
7 int n;
8 while (cin>>n)
9 {
10 if(n <= 2)
11 cout<<"XiaoNiu"<<endl;
12 else
13 cout<<"XiaoKe"<<endl;
14 }
15 return 0;
16 }
明楼

浙公网安备 33010602011771号