8-取石子1(围圈)

链接:https://www.nowcoder.net/acm/contest/75/D
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

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


输入描述:

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

输出描述:

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

输入

2
3

输出

XiaoNiu
XiaoKe

思路:可以知道先手第一次取要么取1个要么取2个,如果只有1或2个,则他赢了;否则他必将一个圈分为了一条连续的线,对于一条连续的线,后手只要让剩余的线的条数为偶数,他就可以赢得局面,对于一条线他是完全可以做到的,
只要一直去中间即可,所以如果n是大于2的则后手必胜。
#include <iostream>
using namespace std;

int main(){
	
	int n;
	while(cin >> n){
		if(n == 1 || n == 2){  //或者 n < 3 
			cout << "xiaoniu" << endl;
			
		}
		else{
			cout << "xiaoke" << endl;
		}
	}
	
	return 0;
} 

  

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/8414664.html