程序(已经Accepted):
#include <stdio.h>
/*
* 逆向思维,从(m,n)到(1,1),
* 给定(m,n),求其父亲,若m>n,则其父亲为(m-n,n),否则为(m,n-m),
* 但是这样做会TLE,这就需要用除法代替减法,加快速度,
* 也就是辗转相除法
* */
int main(void)
{
int n, a, b, l, r, temp, i;
scanf("%d", &n);
for(i=0; i<n; i++)
{
l = r = 0;
scanf("%d%d", &a, &b);
while(a!=1 || b!=1)
{
if(a>b)
{
temp = (a-1)/b;
l +=temp;
a -=temp*b;
}
else
{
temp = (b-1)/a;
r +=temp;
b -=temp*a;
}
}
printf("Scenario #%d:\n", i+1);
printf("%d %d\n", l, r);
if(i<n-1) //最后一次失败,不再换行
printf("\n");
}
return 0;
}
运行结果: