Cod sursa(job #2313205)
| Utilizator | Data | 6 ianuarie 2019 13:15:07 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f("fact.in"); ///kruskal
ofstream g("fact.out");
int p, c, k;
int cb(int p) { /// cel mai mic nr nat n pt care n! are exact p cifre de 0
int s = 1, d = 1000000000, m, pos = -1, k5, c;
while (s <= d) {
m = s + (d - s) / 2;
c = 5, k5 = 0; while (c <= m) k5 += m / c, c *= 5;
if (k5 == p) pos = m, d = m - 1;
else if (k5 > p) d = m - 1;
else s = m + 1;
}
return pos;
}
int main()
{
f >> p;
g << cb(p);
return 0;
}