티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/3474
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T, n, cnt;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> T;
while(T--)
{
cnt = 0;
cin >> n;
for(int i=5; i<=n; i*=5) cnt += n/i;
cout <<cnt << "\n";
}
return 0;
}
범위가 굉장히 크기에 단순 브루트포스를 통해서는 무조건 시간초과가 나는 문제이다.
0의 개수를 체크하려면 2*5의 경우를 세야하는데, 팩토리얼 구조상 2가 5보다 무조건 많을 수 밖에 없다.
따라서 5의 배수 개수만 세서 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 1459번] 걷기 (C++) (0) | 2025.04.23 |
---|---|
[백준 1105번] 팔 (C++) (0) | 2025.04.20 |
[백준 14490번] 백대열 (C++) (0) | 2025.04.18 |
[백준 2312번] 수 복원하기 (C++) (0) | 2025.04.15 |
[백준 1064번] 평행사변형 (C++) (0) | 2025.04.14 |