반응형
문제
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 N = 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 |
최근댓글