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

두 분수의 분자와 분모가 주어졌을 때, 이 두 분수의 합을 구하고, 그 결과를 기약분수 형태로 출력하는 문제이다.
일단 분수의 합을 먼저 구한뒤 최대공약수로 나눠서 기약분수로 만들면 된다.
풀이
import sys
def gcd(x, y):
# 유클리드 호제법을 사용해 최대공약수(GCD) 구하기
while y > 0:
x, y = y, x % y
return x
# 입력 받기
num1, denom1 = map(int, sys.stdin.readline().split())
num2, denom2 = map(int, sys.stdin.readline().split())
# 두 분수의 합 구하기
numerator_sum = num1 * denom2 + num2 * denom1
denominator_sum = denom1 * denom2
# 기약분수로 만들기 위해 최대공약수 구하기
g = gcd(numerator_sum, denominator_sum)
# 결과 출력
print(numerator_sum // g, denominator_sum // g)
- `gcd(x, y)` 함수는 유클리드 호제법을 사용하여 두 수의 최대공약수를 계산
- `numerator_sum`은 두 분수의 합의 분자를 계산
- `denominator_sum`은 두 분수의 공통 분모를 계산
- `g`는 분자와 분모의 최대공약수를 의미하며, 이를 사용하여 분자와 분모를 나눔으로써 기약분수로 만든다.
- 마지막으로, 기약분수 형태로 변환된 결과를 출력
'PS > 수학' 카테고리의 다른 글
[백준] 17103번: 골드바흐 파티션 파이썬 (0) | 2024.09.09 |
---|---|
[백준] 4134번: 다음 소수 파이썬 (1) | 2024.09.06 |
[백준]2485번: 가로수 파이썬 (0) | 2024.09.05 |
[백준] 13241번: 최소공배수 파이썬 (3) | 2024.09.03 |
[백준] 18110번: solved.ac 파이썬 (0) | 2024.03.02 |