알고리즘(python)/수학

[Python]수학3 백준 1676

개발일기 2020. 1. 22. 22:33
반응형

   문제

   https://www.acmicpc.net/problem/1676



팩토리얼의 값을 구해 10으로 나눠가며 나머지가 없으면 결과값에 1씩더해주는 방식으

로 구현하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
n=int(input())
 
factorial=[1 for _ in range(n+1)]
 
for i in range(1,n+1):
    factorial[i]=i*factorial[i-1]
 
 
result=0
check=1
while check:
    if factorial[n]%10==0:
        factorial[n]//=10
        result+=1
    else:
        check=0
 
 
print(result)
cs


다른방법으로는 5의 배수의 개수만큼 0이 생긴다고 봐도된다.

10은 2와 5의 곱이며 팩토리얼에 2는 충분히 많기때문에 5가 나올때마다 1씩 더해

주면된다.여기서 주의할점은 5^n인 수일때는 n개만큼 더해주어야 한다.


1
2
3
import sys 
= int(sys.stdin.readline())
print(N//5+N//25+N//125)
cs


이렇게 간단하게 해결할 수도 있다.


반응형