Pagini recente » Cod sursa (job #1356525) | Profil LeVladz | Cod sursa (job #206591) | Monitorul de evaluare | Cod sursa (job #675840)
Cod sursa(job #675840)
#include <cstdio>
#include <climits>
using namespace std;
long p,n,i,x,d,st,dr,c;
long zero(long x)
{long d=5,s;
s=0;
while (x/d>0)
{s=s+x/d;
d*=5;}
return s;
}
int main()
{FILE *f1 = fopen("fact.in","r");
FILE *f2 = fopen("fact.out","w");
fscanf(f1,"%ld",&p);
st=1;dr=LONG_MAX-1;
while (st<=dr)
{c=(st+dr)/2;
if (p<zero(c)) dr=c-1;
else if (p>zero(c)) st=c+1;
else {n=c;break;}
if (zero(dr)<p || zero(st)>p) {fprintf(f2,"-1");return 0;}
}
while (zero(n)==p) n--;
if (p==0) fprintf(f2,"1");
else fprintf(f2,"%ld",n+1);
fclose(f1);fclose(f2);
return 0;
}