본문 바로가기
백준 문제 풀이 & C++ 공부

백준 1676번 C++

by daisy0461 2022. 9. 7.

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

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

와.. 문제보고 재귀로 팩토리얼 다 만들고 10으로 나누니 시간 초과가 뜬다.

어떻게든 줄어보려고 재귀에 이상한 짓 다 했는데 계속 시간초과가 떠서 뭐가 문제인지 모르겠었다.

근데 2*5가 10이 되는 걸로 푼다는게 아닌가.. 배신감...

 

즉 팩토리얼에 5가 몇번 곱해지는지 보면 된다.

5가 나오면 count+1, 25면 count +2처럼...

계속 생각했는데 생각도 못한 방법이다.

 

#include <iostream>

using namespace std;


int main(){
    int n;
    cin >> n;       //n입력
    int count =0;
    for(int i =5; i<=n; i++){
        int a = i;
        while(a%5 == 0){
            a = a/5;
            count++;
        }
    }
    cout << count;
}

 

'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글

백준 1068 C++  (2) 2024.02.13
백준 11047번 C++  (0) 2022.09.13
백준 1463번 C++  (0) 2022.08.09
백준 2108번 C++  (0) 2022.08.07
백준 1003번 C++  (0) 2021.09.12