时间限制: 1s 内存限制: 512MB 提交: 1407 解决: 513
题目描述
满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少?
如果这样的 N 不存在输出 −1。
输入格式
一个整数 K。
输出格式
一个整数代表答案。
样例输入
复制
2
样例输出
复制
10
提示
对于 30% 的数据,1 ≤ K ≤ 106 .
对于 100% 的数据,1 ≤ K ≤ 1018 .
#include <iostream>
using namespace std;
int find2(int n) {
int i = 0;
while (n % 2 == 0 && n != 0) {
i++;
n /= 2;
}
return i;
}
int find5(int n) {
int i = 0;
while (n % 5 == 0 && n != 0) {
i++;
n /= 5;
}
return i;
}
int main() {
int K;
int i = 0;
int j = 0;
int I = 2;
int J = 5;
cin >> K;
while (min(i,j) <= K) {
i += find2(I);
I += 2;
j += find5(J);
if (min(i, j) == K) {
cout << J;
return 0;
}
J += 5;
}
cout << -1;
return 0;
}
代码没过全部用例,随便看看吧