注解
1、本题是求两个分数的最小公倍数并化简。
2、思路:a/b和c/d的最小公倍数为e/f,则e是a和c的最小公倍数,f是b和d的最大公约数。
代码
#include <iostream>
using namespace std;
typedef long long int LL;
LL gcd(LL a, LL b){
return a%b==0?b:gcd(b,a%b);
}
int main(){
int T;
scanf("%d", &T);
for(int i=0; i<T; i++){
LL a, b, c, d;
scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);
LL gcdAB = gcd(a, b);
a /= gcdAB;
b /= gcdAB;
LL gcdCD = gcd(c, d);
c /= gcdCD;
d /= gcdCD;
LL e = a /gcd(a, c) *c;
LL f = gcd(b, d);
LL gcdEF = gcd(e, f);
e /= gcdEF;
f /= gcdEF;
if(f==1){
cout<<e<<endl;
}
else{
cout<<e<<"/"<<f<<endl;
}
}
return 0;
}