티스토리 뷰

[ BOJ ] 1676번 : 팩토리얼 0의 개수

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


[  문제  ]

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

[  입력  ]

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

[  출력  ]

첫째 줄에 구한 0의 개수를 출력한다.


[  문제 접근 및 풀이  ]

뒤에서부터 0이 나오는 개수는 $N!$에서 10의 개수만큼이므로

$N!$중 $1$ ~ $N$을 돌면서 5의 개수, 2의 개수를 측정해

더 낮은 값을 출력시켰다.

[  소스 코드  ]

#include<bits/stdc++.h>
using namespace std;
int N,Fc,Tc,K;
void Q_1676();
int counting(int num,int mod);
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	Q_1676();
}
void Q_1676(){
    cin >> N;
    for(int i=1;i<=N;i++){
        if(i%5==0) Fc+=counting(i,5);
        if (i%2==0) Tc+=counting(i,2);
    }
    cout << min(Fc,Tc);
}
int counting(int num,int mod){
    int Count=0;
    while(num%mod==0){
        Count++;
        num/=mod;
    }
    return Count;
}

'BOJ' 카테고리의 다른 글

[ BOJ / C++ ] 10451번 : 순열 사이클  (0) 2025.04.13
[ BOJ / C++ ] 1932번 : 정수 삼각형  (0) 2025.04.06
[ BOJ / C++ ] 2294번 : 동전 2  (0) 2025.04.06
[ BOJ / C++ ] 25195번 : Yes or yes  (0) 2025.03.30
[ BOJ / C++ ] 21921번 : 블로그  (0) 2025.03.30