Cod sursa(job #1642230)
Utilizator | Andrei Florin Sburly | Data | 9 martie 2016 13:15:13 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.98 kb |
#include <fstream>
using namespace std;
int main()
{
ifstream f("fact.in");
ofstream g("fact.out");
long int p;
f >> p;
if(p == 0)
{
g << 1;
}
else
{
long int s = 1;
long int d = 10000000000000;
bool b = false;
while(s <= d)
{
long int mij = (s+d)/2;
long int t = 5;
long int nr0 = 0;
while(t <= mij)
{
nr0 += mij/t;
t*=5;
}
if(nr0 == p)
{
b = true;
while(mij % 5 !=0)
mij--;
g << mij;
break;
}
else
{
if(p < nr0)
d = mij-1;
else
s = mij + 1;
}
}
if(!b)
{
g << -1;
}
}
return 0;
}