문제
nCm 의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오.
코드
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
def count_number(n, k):
count = 0
while n:
n //= k
count += n
return count
five_count = count_number(N, 5) - count_number(M, 5) - count_number(N - M, 5)
two_count = count_number(N, 2) - count_number(M, 2) - count_number(N - M, 2)
answer = min(five_count, two_count)
print(answer)
나의 생각
진짜 팩토리얼로 구해서 문제를 해결하게 되면 시간초과 발생
끝자리가 0이라는 것은 10의 배수
10은 2와 5로 구성되어 있음
2와 5 짝이 맞아야 10이 되므로 2의 개수와 5의 개수 중 더 작은 게 10의 개수이다.
다시 한번 더 풀어 보자.
'Algorithm > 백준' 카테고리의 다른 글
| [BAEKJOON] 1037번: 약수 (0) | 2023.08.24 |
|---|---|
| [BAEKJOON] 4375번: 1 (0) | 2023.08.24 |
| [BAEKJOON] 1676번: 팩토리얼 0의 개수 (0) | 2023.08.23 |
| [BAEKJOON] 10872번: 팩토리얼 (0) | 2023.08.23 |
| [BAEKJOON] 6588번: 골드바흐의 추측 (0) | 2023.08.23 |