Description
两只青蛙在一个点,但是他们想要来个久别胜新婚的约会,于是他们出发,朝同一个方向绕圈跳,我们求出他们相遇的时间
Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示跳n圈需要的秒数(1/2,表示跳2圈要1秒),用'/'隔开。
Output
对于每组测试数据, 输出它们的下次相遇时间,如果相遇周期是整数则用整数表示,否则用最简分数表示。
Sample Input
21/2 3/43/4 6/7
Sample Output
3/26
#include<stdio.h>
long long gcd(long long m,long long n){
long long r,t;
if(m<n){
t=n;
n=m;
m=t;
}r=m%n;
while(r!=0){
m=n;
n=r;
r=m%n;
}return n;
}
int main()
{
int T,i;
long long a,b,c,d,x,y,g;
scanf("%d",&T);
for(i=1;i<=T;i++){
scanf("%lld/%lld %lld/%lld",&a,&b,&c,&d);
x=b*c-a*d;
y=a*c;
if(x>0&&y>0||x<0&&y<0){
x=x;y=y;
}else if(x>0&&y<0||x<0&&y>0){
x=-x;y=y;
}
if(x==0){
printf("1\n");
}else if(x==1){
printf("%lld\n",y);
}else{
g=gcd(x,y);
x=x/g;
y=y/g;
if(x==1){
printf("%lld\n",y);
}else{
printf("%lld/%lld\n",y,x);
}
}
}
return 0;
}
相遇的问题跟速度差有关 a/b c/d 这样输入的 速度差=b/a - d/c 通分一下 然后求个倒数就是答案
用long long,用int不行
当速度相同时 用时为1
化成最简形式就是同时除以个最大公因数