반응형
문제설명
https://www.acmicpc.net/problem/2004
2004번: 조합 0의 개수
첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다.
www.acmicpc.net
사고과정
- 주어진 데이터 범위가 20억이기 때문에 매우 큰 수다. 따라서 조합을 다 계산하는 것이 아닌 0의 개수만을 찾아야 함. 0개수는 2와 5의 개수로 알아낼 수 있다. 자세한 설명은 여기를 참고하자.
풀이(스스로 못 푼 풀이)
import sys
input = sys.stdin.readline
n, k = map(int, input().split()) # (n, k)
def count(n, num):
cnt = 0
divnum = num
while n >= divnum:
cnt += (n // divnum)
divnum *= num
return cnt
two_cnt = count(n, 2) - count(k, 2) - count(n-k, 2)
five_cnt = count(n, 5) - count(k, 5) - count(n-k, 5)
print(min(two_cnt, five_cnt))
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[BOJ] 17087번 - 숨바꼭질 6 (0) | 2021.10.27 |
---|---|
[BOJ] 9613번 - GCD 합 (0) | 2021.10.27 |
[BOJ] 1676번 - 팩토리얼 0의 개수 (0) | 2021.10.26 |
[BOJ] 6588번 - 골드바흐의 추측 (0) | 2021.10.26 |
[BOJ] 1978번 - 소수 찾기 (0) | 2021.10.26 |