[C++] 백준 1676 : 팩토리얼 0의 개수

Kim Nahyeong·2022년 1월 4일
0

백준

목록 보기
12/157

#include <iostream>

int main(int argc, char **argv){
    int N, cnt = 0; // fac 숫자 크기 때문에 직접 구하는 것 불가능
    scanf("%d", &N);

    for(int i = 1; i <= N; i++){ // 5의 배수 개수 구하기 - 2의 배수는 많다.
        if(i % 125 == 0){ // 5 * 5 * 5
            cnt += 3;
        } else if(i % 25 == 0){ // 5 * 5
            cnt += 2;
        } else if(i % 5 == 0){
            cnt++;
        }
    }

    printf("%d", cnt);

    return 0;
}

오늘의 키포인트

  • 500! 는 매우매우 큰 숫자라 long long으로도 커버되지 않는다. 수학적으로 접근해야한다.
  • 0이 생기려면 10의 배수라는 뜻이다. 10의 배수 = 2의 배수 * 5의 배수 이므로 엄청 많은 2의 배수의 개수를 구하기 보다는 그냥 5의 배수의 개수를 구하면 된다.

0개의 댓글