Pagini recente » Cod sursa (job #595784) | Cod sursa (job #2877429) | Cod sursa (job #1371368) | Cod sursa (job #1333682) | Cod sursa (job #1438128)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/*
(p-5)%6==0 => -1
N=5^x=> p-i=-1 ptr i=1:x-1;
in rest -> +5 in poz != -1
*/
FILE *f=fopen("fact.in","rt");
FILE *g=fopen("fact.out","wt");
long *v;
int nu[11]={5,25,125,625,3125,15625,78125 ,390625 ,1953125,9765625,48828125};
long long i,p,m,k,suma=0;
int nr;
fscanf(f,"%lld",&p);
v=calloc(11,sizeof(*v));
if(p<0)
{
fprintf(g,"-1");
printf("-1");
return 0;
}
if(p==1)
{
fprintf(g,"%d ",5);
printf("%d",5);
return 0;
}
if(p==0)
{
fprintf(g,"1");
printf("1");
return 0;
}
for(i=0;i<11;i++)
{
v[i]=(nu[i]-1)/4;
if(p>=v[i])
m=i;
for(k=1;k<i;k++)
if(p==v[i]-k)
{
fprintf(g,"-1");
printf("-1");
return 0;
}
printf("%d ",m);
}
for(i=m;i>=0;i--)
{
nr=0;
while(p>=v[i])
{
p-=v[i];
nr++;
suma+=nu[i];
}
if(nr==5)
{
fprintf(g,"-1");
printf("-1");
return 0;
}
}
printf("%d ",suma);
fprintf(g,"%d ",suma);
return 0;
}