https://www.acmicpc.net/problem/1676
def fac(x):
return 1 if x <= 1 else x * fac(x-1)
num = fac(int(input()))
cnt = 0
for i in str(num)[::-1]:
if i == '0':
cnt += 1
else:
break
print(cnt)
fac
정의N!
을 구해 num
에 저장num
을 str
로 형변환하여 끝에서부터 한 문자씩 가져와, '0'
일 경우 cnt += 1
N = int(input())
print(N//5 + N//25 + N//125)
# 0 ≤ N ≤ 500 이므로 5^3 = 125까지만 고려하면 된다. (5^4 = 625 > 500)
# 예시 1) 25! -> 5+1+0=6
# 예시 2) 30! -> 6+1+0=7
5! = 1*2*3*4*5 -> 5가 1개 -> 0이 1개
10! = 1*2*3*4*5*6*7*8*9*10 -> 5가 2개(5, 10=5*2) -> 0이 2개
0! ~ 4! -> 0이 0개
5! = 120 -> 0이 1개; 5
...
10! = 3628800 -> 0이 2개; 5, 10
...
15! = 1307674367000 -> 0이 3개; 5, 10, 15
...
20! = 2432902...40000 -> 0이 4개; 5, 10, 15, 20
...
25! = 1551121...4000000 -> 0이 6개; 5, 10, 15, 20, 25(=5*5)
...
30! = 5, 10, 15, 20, 25, 30 -> 5가 7개 -> 0이 7개