문제 링크
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))
'개발 > algorithm' 카테고리의 다른 글
[백준 17626번] Four Squares - python (0) | 2022.02.14 |
---|---|
[백준 9095번] 1, 2, 3 더하기 -python (0) | 2022.02.14 |
[백준 2579번] 계단 오르기 -python (0) | 2022.02.14 |
[백준 9375번] 패션왕 신해빈 - python (0) | 2022.02.14 |
[백준 17210번] 비밀번호 찾기 -python (0) | 2022.02.14 |