Cod sursa(job #2035876)
Utilizator | Data | 9 octombrie 2017 21:50:38 | |
---|---|---|---|
Problema | Factorial | Scor | 15 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <iostream>
#include<fstream>
#include<climits>
using namespace std;
long nr_zero(int n)
{
long p=0,i;
for(i=5;i<=n;i=i*5)
p=p+(long)(n/i);
return p;
}
int main()
{ long P,st,dr,m,nr;
int N,ok=0;
ifstream fin("fact.in");
ofstream fout("fact.out");
fin>>P;
st=0;
dr=INT_MAX;
while(st<=dr&&ok==0)
{
m=(st+dr)/2;
nr=nr_zero(m);
if(nr==P)
{
ok=1;
N=m;
}
else
if(nr>P)
dr=m-1;
else
st=m+1;
}
if(ok==1)
fout<<N;
else
fout<<"-1";
return 0;
}