문제풀이(Problem Solving)

백준, BOJ, 1676번 C++ [CPP]

게임이 더 좋아 2021. 6. 11. 02:29
반응형
728x170

10^승의 개수가

0의 개수란 것을 안다면

쉽다.

다만 숫자가 크기에..잘해봐야한다.

더군다나 시간제한도 있다

 

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

 


 

 

#맞는 풀이

#include<iostream>

using namespace std;

//0의 개수는 소인수분해 시 2와 5의 개수에 따라 결정된다.
//즉, 모든 숫자에 대해서 2,5의 개수파악, 근데 2의 개수가 압도적으로 많으므로 5의 개수만 파악하면 알아서 되겠다.

int dp[501];



int main(){
    
    int N;
    cin >> N;
    for(int i = 1; i<=N; i++){
        int cnt = 0;
        int temp = i;
        while(1){
            if(temp%5 == 0){
                cnt++;
                temp /= 5;
            }else{
                break;
            }
        }
        dp[i] = cnt;
    }
    int ans = 0;
    for(int i = 1; i<=N; i++){
        ans += dp[i];
    }
    
    cout << ans << '\n' ;
}

 

간단한 수학문제다.

안에 주석으로 답을 달아놨다.

 

 

728x90
반응형
그리드형

'문제풀이(Problem Solving)' 카테고리의 다른 글

백준, BOJ, 2630번 C++ [CPP]  (0) 2021.06.14
백준, BOJ, 3036번 C++ [CPP]  (0) 2021.06.11
백준, BOJ, 1010번 C++ [CPP]  (0) 2021.06.11
백준, BOJ, 2609번 C++ [CPP]  (0) 2021.06.10
백준, BOJ, 1037번 C++ [CPP]  (0) 2021.06.10