Algorithm/BackJoon

1735번: 분수 합

꼬부기가우는소리 2023. 6. 20. 09:07
728x90

 

- 관련 사이트: https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

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

www.acmicpc.net

 

2개의 분수가 주어졌을 때, 두 분수의 합을 기약분수로 나타내는 문제이다.

 

1) 입력받은 두 분수의 합 계산

    입력받은 분수: a/b, c/d

    분자 = a * d + c * b

    분모 = b * d

2) 계산된 분자, 분모의 최대공약수 계산: 유클리드 호제법 이용

3) 계산된 분자, 분모를 각각 최대공약수로 나눔 == 기약분수

 

#include <iostream>
using namespace std;

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

int main()
{
    long long int a, b, c, d, nume, deno;
    cin >> a >> b >> c >> d;
    nume = a * d + c * b;
    deno = b * d;
    
    a = gcd(nume, deno);
    cout << nume / a << " " << deno / a;
    
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

- 코드 길이: 320 B

728x90