机试真题 关于分数相加的问题

模拟大致的分母相加减的问题;

利用最大公约数和最小公倍数可以解决;

对于不同分母,求最小公倍数;

加和化简之后,采用最大公约数进行分子分母同除计算;

最小公倍数和最大公约数相关的问题之前总结过;

#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;
}

  

猜你喜欢

转载自www.cnblogs.com/songlinxuan/p/12687653.html