공부/알고리즘
[단계별로 풀어보기][Python 3] 정수론 및 조합론 - 링 (3036)
도리암
2022. 5. 3. 18:41
3036번: 링
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
www.acmicpc.net
위의 문제는 문제 자체의 알고리즘은 쉬우나 기약분수를 이용해야 하는 문제다.
수식 도출
각 원의 둘레는 다음과 같은 식을 가진다.
따라서 다음과 같은 식이 도출된다.
풀이
import fractions
n = int(input())
rings = list(map(int, input().split()))
R = [fractions.Fraction(rings[0], rings[i]) for i in range(1, n)]
for i in R:
print(f"{i.numerator}/{i.denominator}")
여기서 기약분수를 이용하기 위해 fractions 모듈을 사용했다.
fractions.Friction() 메소드는 fraction() 객체를 반환한다.
여기서 분자와 분모를 도출하려면 다음의 메소드를 사용하면 된다.