Cod sursa(job #1696083)
Utilizator | Data | 28 aprilie 2016 13:45:12 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
long long int p;
fin>>p;
long long int st=1,dr=5*p,mij;
while(st<=dr) {
mij=(st+dr)/2;
long long int nZero=0;
for(int i=5;i<=mij;i*=5)
nZero+=mij/i;
if(nZero==p)
break;
else if(nZero<p)
st=mij+1;
else
dr=mij-1;
}
if(p==0)
fout<<"1";
else if(st<=dr)
fout<<mij-mij%5;
else
fout<<"-1";
return 0;
}