hdu1713 相遇周期 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1713
数学水
题目大意:两飞船绕同一星球沿同一方向飞,知道它们各自的周期(转多少圈要多少天),求相遇周期。
题目分析:已知两飞船周期,求相遇周期,即为求两数的最小公倍数。输入的两个分数是飞船速度,要变成周期需倒过来看,接下来的任务就是求两个分数的最小公倍数了。和整数一样,分数的最小公倍数等于两数乘积除以它们的最大公约数。最大公约数的求法是 两数分子的最大公约数 / 两数分母的最小公倍数。
以下是代码:
#include <stdio.h>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int n,q1,q2,t1,t2,g,q,x;
scanf("%d",&n);
while(n--)
{
scanf("%d/%d %d/%d",&q1,&t1,&q2,&t2);
g=gcd(q1,q2);
q=q1/g*q2;
t1*=q2/g;
t2*=q1/g;
g=gcd(t1,t2);
x=gcd(q,g);
q/=x;
g/=x;
if(g-1)printf("%d/%d\n",q,g);
else printf("%d\n",q);
}
return 0;
}
PS:水水更健康!