2004_조합0의개수(C++)

#include <iostream>
using namespace std;

int main() {
	int n, m;
	long numOfFive = 0;
	long numOfTwo = 0;

	cin >> n >> m;
	for (long i = 5;i <= n; i *= 5) {
		numOfFive += n / i;
	}
	for (long i = 5;i <= m; i *= 5) {
		numOfFive -= m / i;
	}
	for (long i = 5;i <= n - m; i *= 5) {
		numOfFive -= (n - m) / i;
	}
	for (long i = 2;i <= n; i *= 2) {
		numOfTwo += n / i;
	}
	for (long i = 2;i <= m; i *= 2) {
		numOfTwo -= m / i;
	}
	for (long i = 2;i <= n - m; i *= 2) {
		numOfTwo -= (n - m) / i;
	}
	cout << min(numOfFive, numOfTwo);
}

1676번과 비슷한 문제이다.
1676(팩토리얼0의개수)는 다음 게시글 참고.
https://velog.io/@kimeunseo58/1676%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC0%EC%9D%98%EA%B0%9C%EC%88%98C

좋은 웹페이지 즐겨찾기