Cod sursa(job #1249555)
| Utilizator | Data | 27 octombrie 2014 09:48:20 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("fact.in");
ofstream out ("fact.out");
inline int exp (const int &N)
{
int P = 5;
int e = 0;
while (N >= P){
e += (N / P);
P *= 5;
}
return e;
}
int main()
{
int P, i = 0, step, X;
in >> P;
X = 5 * P;
for (step = 1; step < X; step <<= 1);
for ( ;step; step >>= 1)
if (i + step <= X && exp (i + step) < P)
i += step;
if (exp (i + 1) == P)
out << i + 1;
else
out << -1;
return 0;
}
