程序(已经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; }
原文地址:http://blog.csdn.net/xumesang/article/details/45048119