https://www.acmicpc.net/problem/1676
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
백준 1676번 팩토리얼 0의 개수 문제입니다.
아직 초보수준이라 코드가 깔끔하지 못한 점 양해바랍니다.
N을 입력받아서 for문을 돌린다음에 while문으로 2의 거듭제곱의 개수, 5의 거듭제곱의 개수를 구해서
두 수의 최솟값을 결과로 출력했습니다.
import sys
N = int(sys.stdin.readline())
two_cnt = 0
five_cnt = 0
for i in range(1, N+1):
while True:
if i % 2 == 0:
i = i / 2
two_cnt += 1
if i <=1 or i == 0:
break
else:
break
while True:
if i % 5 == 0:
i = i / 5
five_cnt += 1
if i <=1 or i == 0:
break
else:
break
print(min([two_cnt, five_cnt]))
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11047번 : 동전0 (0) | 2022.01.27 |
---|---|
파이썬) 백준 알고리즘 | 11399번 : ATM (0) | 2022.01.27 |
파이썬) 백준 알고리즘 | 3036번 : 링 (0) | 2022.01.21 |
파이썬) 백준 알고리즘 | 2108번 : 통계학 (0) | 2022.01.19 |
파이썬) 백준 알고리즘 | 4673번 : 셀프 넘버 (0) | 2022.01.07 |
댓글