Description
两只青蛙在一个点,但是他们想要来个久别胜新婚的约会,于是他们出发,朝同一个方向绕圈跳,我们求出他们相遇的时间
Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示跳n圈需要的秒数(1/2,表示跳2圈要1秒),用'/'隔开。
Output
对于每组测试数据, 输出它们的下次相遇时间,如果相遇周期是整数则用整数表示,否则用最简分数表示。
Sample Input
2
1/2 3/4
3/4 6/7
Sample Output
3/2
6
解析:一句话,就是让我们算速度差的倒数。因此我们可以直接反着输入分子分母,就直接是速度了,然后同分处理,倒数,根据是否整除输出即可,速度相同时候输出1噢。
注意!!:用long long 输入,int会WA,亲测有效(/(ㄒoㄒ)/~~)。
#include <stdio.h>
long long gcd(long long a,long long b){ //求最大公约数
long long t=1,max,min;
if(a>=b) max=a,min=b;
else max=b,min=a;
while(t>0){
t=max%min;
max=min;
min=t;
}
return max;
}
int main()
{
long long T,f1,f2,m1,m2,k,c;
scanf("%lld",&T);
while(T--){
scanf("%lld/%lld %lld/%lld",&m1,&f1,&m2,&f2);//直接输入倒数
k=gcd(m1,m2),k=m1*m2/k;
f1*=k/m1,m1*=k/m1,f2*=k/m2,m2*=k/m2; //同分
if(f1==f2){ //速度相同输出1
printf("1\n");
continue;
}
if(f1>f2) c=f1-f2;//确定速度差(分母已经相同,我们现在计算分子差就ok)
else c=f2-f1;
k=gcd(c,m1);
c/=k,m1/=k; //化为最简分数
if(m1%c==0) printf("%lld\n",m1/c); //无法整除
else printf("%lld/%lld\n",m1,c);
}
return 0;
}