https://www.acmicpc.net/problem/2004

 

2004번: 조합 0의 개수

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

www.acmicpc.net

 

 

 

 

문제

 

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

 

 

 

코드

 

#include <iostream>
using namespace std;

int main(void){
	long long n, m;
	cin>>n>>m;

	long long ans5 = 0;
	long long ans2 = 0;
	
	// 5의 개수
	for(long long i = 5; i <= n; i *= 5) ans5 += n / i; // n!
	for(long long i = 5; i <= n - m; i *= 5) ans5 -= (n - m) / i; // (n - m)!
	for(long long i = 5; i <= m; i *= 5) ans5 -= m / i; // m!

	// 2의 개수
	for(long long i = 2; i <= n; i *= 2) ans2 += n / i; // n!
	for(long long i = 2; i <= n - m; i *= 2) ans2 -= (n - m) / i; // (n - m)!
	for(long long i = 2; i <= m; i *= 2) ans2 -= m / i; // m!

	cout<<(ans5 > ans2 ? ans2 : ans5);
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 11724번: 연결 요소의 개수  (0) 2020.05.18
백준 1260번: DFS와 BFS  (0) 2020.05.18
백준 1676번: 팩토리얼 0의 개수  (0) 2020.05.18
백준 10872번: 팩토리얼  (0) 2020.05.18
백준 11653번: 소인수분해  (0) 2020.05.18