c c++ 언어 공부

백준 1735번 : 분수 합 C언어

Code C 2023. 3. 9. 13:55

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

 

1735번: 분수 합

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

www.acmicpc.net

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
 
int gcd(int a, int b)
{
    int A, B;
    if (a > b)
    {
        A = a;
        B = b;
    }
    else
    {
        A = b;
        B = a;
    }
    if (B == 0)
    {
        return A;
    }
    else
    {
        gcd(B, A % B);
    }
}
 
int main(void) {
    int n1, d1, n2, d2;
    scanf("%d %d"&n1, &d1);
    scanf("%d %d"&n2, &d2);
    int num;
    int den;
    den = d1 * d2;
    num = (n1 * d2 + n2 * d1);
    int div= gcd(num, den);
    num = num / div;
    den = den / div;
    
    printf("%d %d", num, den);
}
cs

두 분수를 통분하여 정리한 뒤 분자와 분모의 최대공약수로 나누었다. 최대공약수는 유클리드 호제법으로 구하였다.