码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1713 相遇周期

时间:2015-02-08 01:37:17      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

Problem Description
2007年3月26日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫共同签署了《中国国家航天局和俄罗斯联邦航天局关于联合探测火星-火卫一合作的协议》,确定中俄双方将于2009年联合对火星及其卫星“火卫一”进行探测。

而卫星是进行这些探测的重要工具,我们的问题是已知两颗卫星的运行周期,求它们的相遇周期。
Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示转n圈需要的天数(26501/6335,表示转26501圈要6335天),用‘/‘隔开。
 

Output
对于每组测试数据, 输出它们的相遇周期,如果相遇周期是整数则用整数表示,否则用最简分数表示。

 

分析:对于求分数的最小公倍数,形如a/b与c/d,可以先求a*d和c*b的最小公倍数,求得的最小公倍数/(b*d)即为两个分数的最小公倍数

 

 

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
long long gcd(long long a,long long b)
{
long long r;
while((r=a%b)!=0)
{
a=b;
b=r;
}
return b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long a,b,c,d;
scanf("%I64d/%I64d %I64d/%I64d",&a,&b,&c,&d);
a=a*d;
c=c*b;
long long m=a*c/gcd(a,c);
if(m%(b*d)==0)printf("%I64d\n",m/(b*d));
else
printf("%I64d/%I64d\n",m/gcd(m,b*d),b*d/gcd(m,b*d));
}
}

HDU 1713 相遇周期

标签:

原文地址:http://www.cnblogs.com/xuxueyang/p/4279592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!