반응형

<코드>

#include<iostream>
using namespace std;

long long N, M, i;
int cnt2 = 0, cnt5 = 0;

int main()
{	
	cin >> N >> M;

	for ( i = 2; i <= N; i *= 2) cnt2 += N / i;
	for ( i = 2; i <= N-M; i *= 2) cnt2 -= (N - M) / i;
	for ( i = 2; i <= M; i *= 2) cnt2 -= M / i;

	for ( i = 5; i <= N; i *= 5) cnt5 += N / i;
	for ( i = 5; i <= N - M; i *= 5) cnt5 -= (N - M) / i;
	for ( i = 5; i <= M; i *= 5) cnt5 -= M / i;

	cout << ((cnt2 < cnt5) ? cnt2 : cnt5);
}

 

이 문제 또한 백준 1676번 문제와 같이 2와 5의 개수에 따라 맨 뒤의 0의 개수가 정해 지므로 비슷한 맥락으로 풀이가 가능하다. 

 

 

 

www.acmicpc.net/problem/2004

 

2004번: 조합 0의 개수

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

www.acmicpc.net

 

반응형

+ Recent posts