728x90
- 관련 사이트: https://www.acmicpc.net/problem/1735
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
'Algorithm > BackJoon' 카테고리의 다른 글
15733번: 나는 누구인가 (0) | 2023.06.23 |
---|---|
4134번: 다음 소수 (0) | 2023.06.23 |
1436번: 영화감독 숌 (0) | 2023.06.15 |
1018번: 체스판 다시 칠하기 (0) | 2023.06.14 |
15964번: 이상한 기호 (0) | 2023.06.14 |
댓글