출처 : https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net

5랑 2를 곱해야 10이 나와서 0이 한개씩 추가되니까
팩토리얼에서 5랑 2의 개수를 구해주고 그 중 최솟값을 출력해주면 된다.
# BOJ1676
N = int(input())
five = 0 # 5의 개수
two = 0 # 2의 개수
for i in range(N, 0, -1): # 팩토리얼
while True:
if i % 5 == 0: # 5가 몇개 있는 지
five += 1
i = i // 5
else:
break
while True:
if i % 2 == 0: # 2가 몇개 있는 지
two += 1
i = i // 2
else:
break
if five == 0 or two == 0: # 예외처리
print(0)
else:
print(min(five, two)) # 최솟값
5나 2중에 하나가 0이면 10이 나올 수 없으니까 그땐 0을 출력해준다.
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 11653번 소인수분해 파이썬 / python (0) | 2022.05.04 |
|---|---|
| [BOJ / 백준] 17219번 비밀번호 찾기 개수 파이썬 / 파이썬 딕셔너리 key value (0) | 2022.05.03 |
| [BOJ / 백준] 10926번 ??! C / C 문자열 입력 출력 (1) | 2022.05.01 |
| [BOJ / 백준] 1620번 나는야 포켓몬 마스터 이다솜 python / 파이썬 딕셔너리 /Key값으로 Value찾기 (0) | 2022.04.30 |
| [BOJ / 백준] 11050번 이항 계수1 python / 파이썬 이항계수의 성질 / 0! 0팩토리얼 (0) | 2022.04.28 |
댓글