十三届蓝桥杯JavaB组:求阶乘
题目描述
满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少? 如果这样的 N 不存在输出 −1。
输入格式
一个整数 K。
输出格式
一个整数代表答案。
样例输入
2
样例输出
10
提示
对于 30% 的数据,1 ≤ K ≤ 106 .
对于 100% 的数据,1 ≤ K ≤ 1018 .
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long k = sc.nextLong();
for(long i = k*4/5*5;i<=k*5;i+=5) {
long n = getZero(i);
if(n == k){
System.out.println(i);
return;
}else if(n > k) {
System.out.println(-1);
return;
}
}
System.out.println(-1);
}
static long getZero(long num){
long n = 0;
while(num > 0) {
num /= 5;
n+=num;
}
return n;
}
}
