zrq495
www.zrq495.com

求a/b与c/b的最小公倍数。

要求最小公倍数,那么结果肯定是分子尽量小,即 求a , c 的最小公倍数, 分母尽量大, 即求 b , d 的最大公约数。、

求最大公约数:

int gcd(int a, int b)
{
    return b?gcd(b, a%b):a;
}

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 
 4 using namespace std;
 5 
 6 int gcd(int a, int b)
 7 {
 8     return b?gcd(b, a%b):a;
 9 }
10 
11 int lcm(int a, int b)
12 {
13     return a/gcd(a, b)*b;
14 }
15 
16 int main()
17 {
18     int a, b, c, d, t, cas;
19     cin >> cas;
20     while(cas--)
21     {
22         scanf("%d/%d %d/%d", &a, &b, &c, &d);
23         t=gcd(a, b);
24         a/=t;
25         b/=t;
26         t=gcd(c, d);
27         c/=t;
28         d/=t;
29         if (gcd(b, d) == 1)
30             cout << lcm(a, c) << endl;
31         else
32             cout << lcm(a, c) << "/" << gcd(b, d) << endl;
33     }
34     return 0;
35 }
posted on 2012-07-31 14:13  zrq495  阅读(282)  评论(0编辑  收藏  举报