코딩테스트

N! 에서의 0의 갯수 (소인수분해 응용)

wtdsoul 2024. 9. 18. 14:30

 

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
#include <math.h>
#include <algorithm>

int main() {
    // freopen
    int n, i, j, tmp, cnt1=0, cnt2=0; 

    scanf("%d", &n);
    for(i=2; i<=n; i++) {
        tmp = i;
        j= 2;
        while(1) {
            if(tmp %j ==0) {
                if(j==2) cnt1++;
                else if(j == 5) cnt2++;
                tmp = tmp/j; // 여기까지 소인수분해
            }
            
            else j++;
            if(tmp == 1) break;
        }
    }
    
    if(cnt1 < cnt2) printf("%d\n", cnt1);
    else printf("%d\n", cnt2);
    
    return 0;
}