반응형
Baekjoon Online Judge의 2004번 조합 0의 개수 문제의 Python 풀이입니다.
2004번: 조합 0의 개수
첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다.
www.acmicpc.net
💻코드
n, m = map(int, input().split())
def C(n, f):
count = 0
while n:
n //= f
count += n
return count
A = C(n, 2) - C(m, 2) - C(n - m, 2)
B = C(n, 5) - C(m, 5) - C(n - m, 5)
print(min(A, B))
🧠풀이
조합의 수를 직접 계산하는 대신, 그 결과에 10이 몇 번 곱해져 있는지를 찾아야한다. 10은 2와 5의 곱이므로, nCm의 결과에 포함된 2의 개수와 5의 개수 중 더 작은 값을 찾으면, 그것이 결과의 끝자리에 있는 0의 개수가 된다.
🤔느낀 점
생각없이 math.comb 쓰다가 시간초과...

반응형
댓글