1.题目:
Problem Description
甲、乙、丙三辆汽车在环形马路上同向行驶,甲车行一周要a分钟,乙车行一周要b分钟,丙车行一周要c分钟,三辆汽车同时从同一个起点出发,至少要过多久这三辆汽车才能同时又在起点相遇。
Input
输入包含多组测试数据,每组只有一行,分别为a,b,c三个整数
Output
对于每个测试用例,输出相遇所需的时间,每个实例输出一行。
Sample Input
36 30 48
10 14 18
Sample Output
720
630
Author
2.注意事项:
这道题有个很坑的地方,就是数据类型超出int的,所以不能用int做,要用__int64,才能过。
3.参考代码:
#include <stdio.h>
__int64 gcd(__int64 a,__int64 b){ ///求两个数的最大公约数
__int64 t;
if(a<b) ///比较,大的数放在前面
{
t=a;
a=b;
b=t;
}
if(a%b==0)
return b;
else
return gcd(b,a%b); ///递归掉用
}
int main()
{
__int64 a,b,c,x,y,z,w;
while(~scanf("%I64d %I64d %I64d",&a,&b,&c))
{
x=gcd(a,b);
y=a*b/x; ///两个数的最小公倍数等于这两个数的乘积再除以这两个数的最大公约数
z=gcd(y,c);
w=y*c/z;
printf("%I64d\n",w);
}
return 0;
}