从板上两个不相等的正数(M,N和M>N)开始。两名球员依次移动。在每一个动作中,玩家都必须在棋盘上写一个正数,等于棋盘上已有的两个数字的差;这个数字必须是新的,即不同于板上已有的所有数字。不能移动的玩家会输掉比赛。在这场比赛中,你应该选择第一还是第二?
根据以上规则,有两名玩家玩这个游戏。假设A先在黑板上写一个数字,然后B再写。
你的任务是编写一个程序来判断获胜者是A还是B。
输入
两个不相等的正数M和N,M>N(M<100000)
输出
A或B
举个例子
- 举个例子a=7,b=4 ,两个都不是偶数
需要写的数就是(7-2)=5,1 2 3 5 6 - 假设a=14,b=8,gcd(14,8)=2,最大公约数
14/gcd(14,8)-2=14/2-2=5
那么场上可以有的数就是2 4 6 10 12 。
a,b都是偶数就要除最大公约数
#include<bits/stdc++.h>
using namespace std;
int gcb(int a,int b)//求最大公约数
{
while(b)
{
int r;
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
int a,b,s;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a%2==0&&b%2==0)//都为偶数
s=(a/gcb(a,b)-2)%2;//a除最大公约数
else
s=(a-2)%2;//0到a之间空缺的数,然后看他是奇数还是偶数
if(s)
printf("A\n");
else
printf("B\n");
}
return 0;
}