Cod sursa(job #2004547)
Utilizator | Data | 26 iulie 2017 09:46:12 | |
---|---|---|---|
Problema | Factorial | Scor | 65 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
long long Zr(int x)
{
long long p = 5, nr = 0;
while(x >= p)
{
nr += x/p;
p *= 5;
}
return nr;
}
int main()
{
long long p, m, st, dr;
in >> p;
if(p == 0)out << 1;
else
{
st = 1;
dr = p * 5 + 100;
while(st < dr)
{
m = (st + dr)/2;
if(Zr(m) >= p)dr = m - 1;
else st = m + 1;
}
if(Zr(st) == p)out << st << "\n";
else out << -1;
}
return 0;
}