[백준/C] 1735번 분수 합 풀이

업데이트:



문제 정보


풀이

문제

두 분수 a/b, c/d가 주어질 때 합을 기약분수 형태로 출력하는 문제입니다.

코드

#include <stdio.h>

int euclidean(int a, int b) {
	return a % b ? euclidean(b, a%b) : b;
}

int main() {
	int a0, a1, b0, b1;

	scanf("%d %d %d %d", &a0, &a1, &b0, &b1);

	int r0 = (a0*b1) + (b0*a1);
	int r1 = a1 * b1;

	int g = euclidean(r0, r1);
	r0 /= g;
	r1 /= g;

	printf("%d %d", r0, r1);

	return 0;
}

설명

통분 후 분자/분모를 계산하고, 유클리드 알고리즘으로 최대공약수를 구해 나누면 기약분수가 됩니다.



댓글남기기