반응형
https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
문제 해석 :
a/b + c/d를 기약분수로 나타내기
풀이 :
$a/b + c/d = (ad + bc)/(bd)$이므로, $a/b + c/d = (a(lcm(b,d)/b) + c(lcm(b,d)/d))/{lcm(b,d)}$를 구하면된다.
이때, gcd(분자, 분모)가 1이 아니라면, gcd(분자, 분모)가 1이 아닐때까지 gcd(분자, 분모)로 나누어주면 된다.
int main() {
fastio();
ll a, b, c, d;
cin >> a >> b >> c >> d;
ll u=a*(lcm(b, d)/b)+c*(lcm(b, d)/d);
ll k=lcm(b, d);
while(gcd(u, k)!=1) {
ll t = gcd(u, k);
u/=t;
k/=t;
}
cout << u << ' ' << k;
}반응형
'BOJ' 카테고리의 다른 글
| 2022 제1회 미적확통컵 개최 후기 (0) | 2023.01.24 |
|---|---|
| BOJ 12095 가장 오래 걸리는 스도쿠 (0) | 2022.05.02 |
| [C++] BOJ 17114 - 하이퍼 토마토 (0) | 2022.04.04 |
| [BOJ] SASA Programming Contest 2021 Haru_101 ver. (0) | 2022.03.22 |
| [C++] 23827 - 수열(Easy) (0) | 2021.12.17 |