반응형

   문제

   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


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


반응형

'알고리즘(python) > 수학' 카테고리의 다른 글

[Python]수학3 백준 2004  (0) 2020.01.23
[Python]수학3 백준 9375  (0) 2020.01.22
[Python]수학3 백준 11051  (0) 2020.01.22
[Python]수학3 백준 11050  (0) 2020.01.21
[Python]수학3 백준 3036  (0) 2020.01.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기