[Baekjoon] 2004. 조합 0의 개수

less than 1 minute read

문제 설명

문제

 (nm)$n \choose m$의 끝자리 0$0$의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 n$n$, m$m$ (0≤m≤n≤2,000,000,000$0 \le m \le n \le 2,000,000,000$, n≠0$n \ne 0$)이 들어온다.

출력

첫째 줄에 (nm)$n \choose m$의 끝자리 0$0$의 개수를 출력한다.

예제 입력 1

25 12

예제 출력 1

2


문제 풀이

# 조합


  • 팩토리얼로 풀이할 경우 시간초과 발생
  • 끝자리가 0이라는 것은 10의 배수
  • 10은 2와 5로 구성되어 있음
  • 2와 5 짝이 맞아야 10이 되므로 2의 개수와 5의 개수중 더 작은게 10의 개수이다.
def count_num(N,num):
    count = 0
    while N != 0:
        N //= num
        count += N
    return count

n,m = map(int,input().split())
print(min(count_num(n,5)-count_num(n-m,5)-count_num(m,5),
            count_num(n,2)-count_num(n-m,2)-count_num(m,2)))


Leave a comment