백준 3474는 어떤 수 N이 주어졌을 때 N!에서 우측에 0이 몇 개 있는 지 갯수를 세는 문제이다.
N의 범위가 1 ~ 1,000,000,000이기 떄문에 일반적인 계산으로 0을 구하는 것은 불가능하다.
K = M * 10^N (M은 우측의 0이 끝난 지점부터의 수)
ex) 5891000 = 5891 * 10^3
ex) K = 5! = 120
5! = 1 * 2 * 3 * 4 * 5
= 2^3 * 3 * 5
ex) K = 10! = 3628800
10! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10
= 2^8 * 3^4 * 5^2 * 7
ex) K = 60!
60! = 1 * 2 * 3 ... 58 * 59 * 60
60 / 5^1 = 12
60 / 5^2 = 2
ex) K = 1024!
1024!= 1 * 2 * 3 ... 1022 * 1023 * 1024
1024 / 5^1 = 204
1024 / 5^2 = 40
1024 / 5^3 = 8
1024 / 5^4 = 1
import java.io.*;
import java.util.*;
public class PN3474 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
for(int i = 0; i < n; i++) {
int input = Integer.parseInt(br.readLine());
int result = 0;
for(int j = 5; j <= input; j += 5) {
result = input / j;
}
sb.append(result).append('\n');
}
System.out.print(sb);
}
}