반응형
이번 문제는 간단하게 분수의 합을 구하는 식을 알면 풀 수 있습니다.
기약분수라고 한다면, 다음과 같이 표현할 수 있습니다.
\[ \frac{a}{b} = \frac{a/g}{b/g} ~when~g = gcd(a, b) \]
두 분수의 합은 \(g = gcd(a, b)\)라고 할 때,
\[ \frac{n}{a} + \frac{m}{b} = \frac{nb/g + ma/g}{ab/g} \]
기본적으로 이것들을 알면 이 문제를 풀 수 있습니다.
다음은 제가 작성한 소스입니다. 소스는 참고용으로 봐주세요.
//------------------------------------------------------------------------------
// baekjoon #1735
// - by Aubrey Choi
// - created at 2019-10-02
//------------------------------------------------------------------------------
#include <stdio.h>
int gcd(int a, int b) { while(b) { int t=b; b=a%b; a=t; } return a; }
int main()
{
int a, b, c, d;
scanf("%d%d%d%d",&a,&b,&c,&d);
int g=gcd(b,d);
a = a*d/g+c*b/g;
b = b/g*d;
g = gcd(a, b);
printf("%d %d\n", a/g, b/g);
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #1743 음식물 피하기(너비우선탐색) (0) | 2022.10.06 |
---|---|
[C/C++] 백준 #1740 거듭제곱(수학) (0) | 2022.10.06 |
[C/C++] 백준 #1726 로봇(너비우선 탐색) (0) | 2022.10.06 |
[C/C++] 백준 #1725 히스토그램(분할 정복) (2) | 2022.10.05 |
[C/C++] 백준 #1722 순열의 순서(수학) (2) | 2022.10.04 |
댓글