Algorithm/boj
백준 3474 //idea를 위해 table을 그려라
Mini_96
2023. 5. 17. 11:28
3474번: 교수가 된 현우
첫째 줄에 테스트 케이스의 개수 T가 주어지고, 이어서 T개의 줄에 정수 N이 주어진다(1 <= N <= 1000000000).
www.acmicpc.net
문제1 : N!완탐은 시간초과
해결 : 10!속에 2가5개, 5가7개있으면 -> 0의 개수는 둘중작은값임.(5)
10! = 10 9 8 7 6 5 4 3 2 1
2의개수: 1 3 1 2 1
문제2:N이 10억이므로 N!을 1,2,3,4,...N 까지하면, 터짐
해결 : 10! 안에 2,4,8,... 의 개수를 각각세는것 만으로 가능.
구현 : 10/2 = 10!안의 2의개수 , 10/4=10!안의 4의개수, ....
10! = 10 9 8 7 6 5 4 3 2 1
2의개수: 1 1 1 1 1
4의개수 : 1 1
8의개수: 1
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
int t,a;
char c;
string s;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL); cout.tie(NULL);
cin >> t;
while (t--)
{
int ret2=0, ret5=0;
cin >> a;
for (int i = 2; i <= a; i*=2)
{
ret2 += a / i;
}
for (int i = 5; i <= a; i *= 5)
{
ret5 += a / i;
}
cout << min(ret2, ret5) << "\n";
}
return 0;
}