Java实现 谁不爱打牌

谁不爱打牌

【问题描述】
BobLee最近在复习考研,但是他也喜欢打牌(有谁不爱玩牌呢?)。但是作为一名ACMER,斗地主显然满足不了他的兴趣,
于是他和YYD一起YY出来了一个游戏规则,规则如下。
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
BobLee和YYD都是很聪明的人,现在告诉你牌数,请你告诉我谁会赢呢?BobLee先拿。

【输入】
输入为多行数据,每行是牌数n(1<=n<=1000)

【输出】
如果是BobLee赢,就输出BobLee,否则就输出YYD,每次一行

【样例输入】
3

【样例输出】
BobLee
YYD
PS:
我们可以发现一个规律,除了1以外每个拿的数量只能是2的倍数,以至于,
每次拿的数量对3取余就是2
导致只要是三的倍数,后拿的就会取得胜利
例子:n=9
第一个取8,第二个拿1,第二个胜利
第一个取4,第二个取1,第一个取1,二1,一1,二1,第二个胜利
。。。
可以自己慢慢推理,
只要是三的倍数,后拿的就会赢,
代码如下

package 第二次模拟;

import java.util.Scanner;

public class Demo8谁不爱打牌 {
	private static Scanner sc;
	private static int n;
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		while(sc.hasNext()) {
			n = sc.nextInt();
			if(0 == n % 3) {
				System.out.println("YYD");
			} else {
				System.out.println("BobLee");
			}
		}
		sc.close();
	}

}

原文地址:https://www.cnblogs.com/a1439775520/p/12946715.html