백준/약수, 배수와 소수

1735번: 분수 합 [C++]

Koalitsiya 2023. 3. 29. 11:37

문제

 

 

풀이

기약분수의 분모는 두 분모의 최소공배수이고, 분자는 서로의 분자와 분모를 곱한 값 2개를 더한 값을 최대공약수로 나눈 값이다.

#include <iostream>

using namespace std;

int gcd(int a, int b) {
	if (b == 0) return a;
	return gcd(b, a % b);
}

int main() {
	int a1, a2, b1, b2;

	cin >> a1 >> a2 >> b1 >> b2;

	int num1 = (a1 * b2) + (a2 * b1);
	int num2 = a2 * b2;

	cout << num1 / gcd(num1, num2) << " " << num2 / gcd(num1, num2);

	return 0;
}