A - 相遇周期
时间限制:1000MS 内存限制:32768KB 64位输入输出格式:%I64d & %I64u
题目描述
2007年3月26日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫共同签署了《中国国家航天局和俄罗斯联邦航天局关于联合探测火星-火卫一合作的协议》,确定中俄双方将于2009年联合对火星及其卫星“火卫一”进行探测。
而卫星是进行这些探测的重要工具,我们的问题是已知两颗卫星的运行周期,求它们的相遇周期。
标准输入
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示转n圈需要的天数(26501/6335,表示转26501圈要6335天),用'/'隔开。
标准输出
对于每组测试数据, 输出它们的相遇周期,如果相遇周期是整数则用整数表示,否则用最简分数表示。
样例输入
2
26501/6335 18468/42
29359/11479 15725/19170
样例输出
81570078/7
5431415
代码:
#include<stdio.h>
int main()
{
long long n1,a,b,c,d,n,m,r,x,y,i,min;
scanf("%lld",&n1);
while(n1--)
{
scanf("%lld/%lld%lld/%lld",&a,&b,&c,&d);
n=a*d;
m=c*b;
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
if(a*c%n==0)
printf("%lld\n",a*c/n);
else
{
x=a*c;
y=n;
min=x>y ? y:x;
for(i=2;i<=min;i++)
{
if(x%i==0&&y%i==0)
{
x=x/i;
y=y/i;
i=2;
}
}
printf("%lld/%lld\n",x,y);
}
}
return 0;
}