Cod sursa(job #2514042)
| Utilizator | Data | 24 decembrie 2019 14:00:34 | |
|---|---|---|---|
| Problema | Factorial | Scor | 25 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
#define NMAX 100000
int nr_zerouri(int n) {
int nr = 0;
//pana la 5 nu am 0
//n/5 => nr zerouri
for (int i = 5; n/i >= 1; i *= 5)
nr += n / i;
return nr;
}
int main()
{
std::ifstream fin("fact.in");
std::ofstream fout("fact.out");
int p, st = 1, dr = NMAX, m, n = -1;
fin >> p;
while (st <= dr) {
m = st + (dr - st) / 2; // <= dr
if (nr_zerouri(m) == p) {
n = m;
dr = m - 1;
}
if (nr_zerouri(m) < p)
st = m + 1;
else
dr = m - 1;
}
fout << n;
fin.close(), fout.close();
return 0;
}