99: Euclid's Game

题目描述
Starts with two unequal positive numbers (M,N and M>N) on the board. Two players move in turn. On each move, a player has to write on the board a positive number equal to the difference of two numbers already on the board; this number must be new, i.e., different from all the numbers already on the board. The player who cannot move loses the game. Should you choose to move first or second in this game?

According to the above rules, there are two players play tihs game. Assumptions A write a number on the board at first, then B write it.

Your task is write a program to judge the winner is A or B.

简单来说就是,A写下一个数,B写下一个数,然后下一个人即A在写板子上任意两个数之差,板子上的数不能相同,直到不能写的那个人为输。

输入
Two unequal positive numbers M and N , M>N (M<1000000)

输出
A or B

样例输入
3 1
样例输出
A

#include<stdio.h>
#include<iostream>
using namespace std;
//简单书写几组数据
//18和45—游戏结束之后时写过的数字是:18、45、27、9、36,共5个
//7和3—游戏结束之后写过的数字是:7、6、5、4、3、2、1,共7个
//8和2—游戏结束之后写过的数字是:8、6、4、2共4个;
//……
//从几组数据观察,可以发现数字的个数和两个数的公因子有关,具体下来就是总共的数字个数是两者中较大数与最大公倍数的商


//求最大公约数
//对2求余,奇数个第一个人胜,反之第二个人胜
int main()
{
	int m,n,a,b;
	cin>>a>>b;
	m=a>b?a:b;
	n=a>b?b:a;
	while(n!=0)
	{
		int tem = m%n;
		m=n;
		n=tem;
	}
	int num = a/m;
	if(num%2==0)
	{
		cout<<"B"<<endl;
	}
	else 
	{
		cout<<"A"<<endl;
	}
	return 0;
 } 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值