[BOJ] 1676번 팩토리얼 0의 개수 - C++

"정수론 및 조합론"

Posted by Yongmin on June 16, 2021

문제

팩토리얼 0의 개수

풀이

10의 i제곱수로 나누었을 때 나누어 떨어지면 그 숫자는 끝에 i개의 0을 가지고 있다. 10은 2와 5로 이루어져있는데, 2x5가 얼마나 곱해졌는지 확인하면 된다. 팩토리얼은 1부터 N까지 모두 곱하는 수이기 때문에, 5의 갯수가 2의 갯수보다 작거나 같게 된다. 그러므로 5의 갯수를 찾으면 된다. 곱해진 수들 각각을 iteartion을 통해 5의 갯수가 몇개인지 확인한다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;

int main(){
    int fivecont = 0;
    
    int N;
    scanf("%d", &N);
    for(int i = 1;i<=N;i++){
        if(i % 125 == 0){
            fivecont += 3;
        }
        else if(i % 25 == 0) {
            fivecont += 2;
        }
        else if(i % 5 == 0) {
            fivecont += 1;
        }
    }
    printf("%d\n", fivecont);
}


# # #