조합 0의 개수
딱 2,000,000,000까지가 int라서 i는 long long을 해줘야 한다.
#include <algorithm>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <string>
#include <cmath>
#include <time.h>
using namespace std;
int fiveCount(int n) {
int cnt = 0;
for (long long i = 5; i <= n; i *= 5) {
cnt = cnt + n / i;
}
return cnt;
}
int twoCount(int n) {
int cnt = 0;
for (long long i = 2; i <= n; i *= 2) {
cnt = cnt + n / i;
}
return cnt;
}
int get_min(int a, int b) {
return a < b ? a : b;
}
int main() {
//freopen("input.txt", "rt", stdin);
int n, m;
scanf("%d %d", &n, &m);
int five = fiveCount(n);
if (m != 0) five -= fiveCount(m);
if (n != m) five -= fiveCount(n - m);
int two = twoCount(n);
if (m != 0) two -= twoCount(m);
if (n != m) two -= twoCount(n - m);
printf("%d", get_min(five, two));
return 0;
}
Author And Source
이 문제에 관하여(조합 0의 개수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bb5918/조합-0의-개수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)