Pagini recente » Cod sursa (job #13522) | Cod sursa (job #1703222) | Cod sursa (job #3164742) | Cod sursa (job #1404508) | Cod sursa (job #517131)
Cod sursa(job #517131)
#include <stdio.h>
long v[14][3];
long FC(long x)
{
int lo,hi,mid,last=0;
for (lo =1,hi=12;lo<=hi;)
{
mid=lo+(hi-lo)/2;
if (v[mid][2]<=x) last=mid,lo=mid+1;
else hi=mid-1;
}
return last;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
long p,n=0,i,x;
v[1][1]=25;
v[1][2]=6;
for (i=2;i<13;i++) {v[i][1]=v[i-1][1]*5;v[i][2]=v[i-1][1]+v[i-1][2];};
scanf("%ld",&p);
x=FC(p);
if (p!=0)
{
if (p>6)
{
if ((p<v[x+1][2])&&(p>v[x+1][2]-x-2)) {n=-1;p=0;};
do
{
x=FC(p);
n=n+v[x][1];
p=p-v[x][2];
}
while (p>5);
}
if (p==5) n=-1;
else n=n+5*p;
}
else n=1;
printf("%ld",n);
return 0;
}