这个题目的主要问题是因子分解,程序中使用了递归的方法来判断两个分数是否可以进行递归分解,根据分解的结果来判断最后谁赢了。
C++代码:
#include<stdio.h>
bool aTrue;
bool bTrue;
int judge(int m,int n,int p)
{
if(aTrue)return 0;
if(m==1&&n==1)//如果都为真,则判定a胜
{
aTrue=true;
return 0;
}
if(n==1)//如果a为假,则判定b胜
bTrue=true;
while(p>1)
{
if(m%p==0)
judge(m/p,n,p-1);
if(n%p==0)
judge(m,n/p,p-1);
p--;
}
return 0;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a<b)
{
int tmp=a;a=b;b=tmp;
}
aTrue=false;bTrue=false;
judge(a,b,100);
if(!aTrue&&bTrue)
printf("%d\n",b);
else
printf("%d\n",a);
}
return 0;
}