求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 }