개발/algorithm
[백준 1676번] 팩토리얼 0의 개수 - python
zzi_on2
2022. 2. 14. 14:28
문제 링크
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
풀이
- 팩토리얼을 계산한 결과값에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 문제
- 결과값을 소인수 분해서 2 * 5의 개수를 구하면 된다.
- 2부터 N까지 소인수분해하여 각 숫자별 소인수 2의 개수를 two, 5의 개수를 five에 누적하여 더한다.
- min(two,five) 출력하면 2* 5의 개수
num = int(input())
d = 2
two = 0
five = 0
# 소인수분해
for n in range(1, num+1):
d = 2
while d <= n:
if n % d == 0:
n = n // d
# 2의 개수
if d == 2 :
two += 1
# 5의 개수
if d == 5:
five += 1
else:
d = d + 1
print(min(two,five))