본문 바로가기
🥇Baekjoon Solutions/정수론

[C++] 백준 1735번: 분수 합

by 코푸는 개발자 2021. 7. 29.
728x90

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

최초풀이

각각의 분모, 분자 수를 만들어서 각각을 2부터 더작은 수까지 나눌 수 있는 수들을 나누는 방식으로 두수 모두 더이상 나눠지지 않을 때까지 과정을 반복해준다. 

주의사항 for을 통해 나눠진다면 나눠질 때마다 i를 1로 초기화해주어야 한다.(중복되는 인수들을 나눠주기 위함)

#include <iostream>

using namespace std;

int main() {
	int A1, B1, A2, B2, A, B;
	cin >> A1 >> B1;
	cin >> A2 >> B2;

	A = A1 * B2 + B1 * A2;
	B = B1 * B2;

	if (A == B) {
		cout << 1 << " " << 1;
	}
	else if (A > B) {
		for (int i = 2; i <= B; i++) {
			if (A % i == 0 && B % i == 0) {
				A = A / i;
				B = B / i;
				i = 1;
			}
		}
		cout << A << " " << B;
	}
	else {
		for (int i = 2; i <= A; i++) {
			if (A % i == 0 && B % i == 0) {
				A = A / i;
				B = B / i;
				i = 1;
			}
		}
		cout << A << " " << B;
	}

	return 0;
}
728x90

댓글