问题描述
满足
�
N ! 的末尾恰好有
�
K 个 0 的最小的
�
N 是多少?
如果这样的
�
N 不存在输出
−
1
−1 。
输入格式
一个整数
�
K 。
输出格式
一个整数代表答案。
样例输入
2
copy
样例输出
10
copy
评测用例规模与约定
对于
30
%
30% 的数据,
1
≤
�
≤
1
0
6
1≤K≤10
6
.
对于
100
%
100% 的数据,
1
≤
�
≤
1
0
18
1≤K≤10
18
.
运行限制
最大运行时间:3s
最大运行内存: 512M
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Scanner;
//1:无需package
//2: 类名必须Main, 不可修改
public class Main {
static long check(long x) {
long t = x / 5;
long res = 0L;
while (t > 0) {
res += t;
t /= 5;
}
return res;
}
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(new BufferedInputStream(System.in));
// 在此输入您的代码...
long k = scan.nextLong();
long l = 0L, r = (long) 9e18; // 搜索区间
while (l < r) {
long mid = l + r >> 1;
if (check(mid) >= k) {
r = mid;
} else {
l = mid + 1;
}
}
if (check(r) == k) {
System.out.println(r);
} else {
System.out.println("-1");
}
scan.close();
}
}