[BOJ][C++] 백준 2004번 조합 0의 개수

Updated:

2004번 조합 0의 개수

1. 문제 정보

백준 온라인 저지 [2004번 조합 0의 개수] 문제의 링크입니다.

문제

nCm의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다.

출력

첫째 줄에 0의 개수를 출력한다.

예제 입력1

25 12

예제 출력1

2

시간 / 메모리 제한

2초 / 128MB


2. 생각

  1. 문제 1676번 팩토리얼 0의 개수 문제를 활용하여 풀 수 있습니다.
  2. 문제 1676과는 다른 점은 n!이 아닌 조합이라는 점입니다.
    조합은 다음과 같이 구합니다.

nCm = n! / (n-m)! * m!

  1. n!, (n-m)!, m!의 2와 5의 조합의 개수를 구합니다. 그리고 n!의 개수에서 (n-m)!과 m!의 개수를 빼야합니다. 조합을 구할 때는 나눗셈을 포함하므로 문제 1676처럼 5의 개수만 세면 안됩니다.

예) 25 12

25!

2의 개수 5의 개수
22 6

(25-12)! = 13!

2의 개수 5의 개수
10 2

12!

2의 개수 5의 개수
10 2

2의 개수 = 22 - 10 - 10 = 2, 5의 개수 = 6 - 2 - 2 = 2
이 예에서는 값이 같지만 두 값중 작은 값을 선택하여 출력합니다.


3. 소스코드 (C++)


터미널의 입출력 화면 예제1

2004_1

터미널의 입출력 화면 다른 예제

2004_2 2004_3