https://www.acmicpc.net/problem/3036
3036번: 링
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
www.acmicpc.net
- 비례식을 활용하면 풀 수 있는 문제이다.
- 최대공약수를 구하기 위해 유클리드 호제법 또한 사용해야한다. (기약분수로 결과를 출력하기 위해)
더보기
def gcd(a, b):
maxVal = a if a >= b else b
minVal = a if a < b else b
while 0 != minVal:
temp = maxVal % minVal
maxVal = minVal
minVal = temp
return maxVal
N = int(input())
ringList = list(map(int, str(input()).split())) # 링의 반지름
answerList = []
aRadius = ringList[0]
for idx, ring in enumerate(ringList):
if(0 == idx): continue
bRadius = ring
gcdVal = gcd(aRadius, bRadius)
answer = str(f'{int(aRadius/gcdVal)}/{int(bRadius/gcdVal)}')
answerList.append(answer)
# print
for ans in answerList: print(ans)
'Coding Problem > 백준' 카테고리의 다른 글
[백준] 9375 - 패션왕 신해빈 (0) | 2021.05.31 |
---|---|
[백준] 5086 - 배수와 약수 (0) | 2021.05.31 |
[백준] 1676 - 팩토리얼 0의 개수 (0) | 2021.05.31 |
[백준] 1037 - 약수 (0) | 2021.05.31 |
[백준] 1010 - 다리놓기 (0) | 2021.05.31 |