时间限制: 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; }
代码没过全部用例,随便看看吧