机试真题 关于分数相加的问题
模拟大致的分母相加减的问题;
利用最大公约数和最小公倍数可以解决;
对于不同分母,求最小公倍数;
加和化简之后,采用最大公约数进行分子分母同除计算;
最小公倍数和最大公约数相关的问题之前总结过;
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int gys(int a,int b) {
if (b == 0)
return a;
return gys(b, a%b);
}
int gbs(int a, int b) {
int temp;
if (a > b) {
temp = gys(a, b);
}
else {
temp = gys(b, a);
}
return (a*b) / temp;
}
int main() {
int a, b, c, d;
while (cin >> a >> b >> c >> d) {
int fm = gbs(b, d);
a *= fm / b;
c *= fm / d;
int fz = a + c;
int gy;
if (fz > fm) {
gy = gys(fz, fm);
}
else {
gy = gys(fm, fz);
}
cout << fz / gy << " " << fm / gy << endl;
}
return 0;
}

浙公网安备 33010602011771号