Pagini recente » Cod sursa (job #104968) | Cod sursa (job #1373995) | Cod sursa (job #1935897) | Cod sursa (job #291149) | Cod sursa (job #203913)
Cod sursa(job #203913)
#include <stdio.h>
const long long v[12]={5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625};
long long p;
int pt(long long x)
{
int nr=0,i;
i=0;
while (x/v[i]>0)
{
i++;
nr=nr+x/v[i];
}
return nr;
}
long long binar(long long x)
{
long long a=0,b=400000015,c;
while (a<b)
{
c=(a+b)/2;
if (pt(c)>=p)
b=c;
if (pt(c)<p)
a=c+1;
}
if (pt(a)==x)
return a;
return -1;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&p);
if (p==0)
printf("1");
if (p==5)
printf("-1");
if ((p!=0)&&(p!=5))
printf("%lld",binar(p));
}