您的位置:首页 > 其它

HDU 1713 相遇周期 LCD LCM 2.1.3

2012-09-15 17:17 316 查看

  对于两个最简的分数 a / b, c / d 把他们两个的最小公倍数 x / y 也设为一个分数形式,那么这个 x 一定能够整除 a , c, y 一定能够被 b , d整除。那么要求得最小公倍数,那么肯定是分子尽量小,即
a , c 的最小公倍数, 分母尽量大, 即 b , d 的最大公约数。

求一组分数的最小公倍数的方法

(1) 先将各个分数化为a/b的形式(假分数 或真分数形式)

(2) 用各个分数的分母的最大公因数作所求最小公倍数的分母

(3) 用各个分数的分子的最小公倍数数作所求最小公倍数的分

#include <stdio.h>

__int64 gcd(__int64 x, __int64 y)
{
if(y == 0)
return x;
else gcd(y, x%y);
}

__int64 lcm(__int64 x,__int64 y)
{
return (x*y)/gcd(x,y);
}

int main()
{
__int64 a,b,c,d,e,f;
__int64 temp;
int cas;
freopen("abc.txt","r",stdin);
scanf("%d",&cas);
while(cas--) {
scanf("%I64d/%I64d",&a,&b);
scanf("%I64d/%I64d",&c,&d);

temp = gcd(a,b);
a /= temp;  b/= temp;

temp = gcd(c,d);
c /= temp; d/=temp;

e = lcm(a,c);
f = gcd(b,d);

temp = gcd(e,f);
e /= temp;
f /=temp;

if( f==1 ) printf("%I64d\n",e);
else printf("%I64d/%I64d\n",e,f);
}

return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: