구현, 수학

[백준] 2004. 조합 0의 개수 풀이

hch06 2025. 2. 5. 21:35

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

 

조합은 위와 같은 수식으로 나타낼 수 있다.

 

이때 뒷자리 0의 개수는 팩토리얼 0의 개수때와 같이 결과를 소인수분해 하였을 때 2와 5의 개수를 확인하면 된다.

 

따라서 약분 후에 2나 5의 개수를 확인한 후 더 작은 값을 출력하여서 문제를 해결했다.


C

더보기
#include <stdio.h>

int count(int e, int a){
    long sum = 0;
    for(long i = a; i <= e; i *= a){
        sum += e / i;
    }
    return sum;
}

int main(){
    int n, m; scanf("%d %d", &n, &m);
    int res1 = count(n, 2) - count(m, 2) - count(n-m, 2);
    int res2 = count(n, 5) - count(m, 5) - count(n-m,5);
    printf("%d\n", (res1 > res2) ? res2 : res1);
}