본문 바로가기
Programming/BOJ

[C/C++] 백준 #1735 분수 합(수학)

by 작은별하나 2022. 10. 6.
반응형

이번 문제는 간단하게 분수의 합을 구하는 식을 알면 풀 수 있습니다.

 

 

기약분수라고 한다면, 다음과 같이 표현할 수 있습니다.

 

\[ \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

댓글