Pagini recente » Cod sursa (job #95947) | Cod sursa (job #2127526) | Cod sursa (job #2282707) | Cod sursa (job #1117332) | Cod sursa (job #18783)
Cod sursa(job #18783)
#include<stdio.h>
#define N 100000000
int put[200],nr[200],n;
void init()
{
put[0]=1;
nr[0]=0;
for(n=1;nr[n-1]<=N;n++)
{
nr[n]=put[n-1]+nr[n-1];
put[n]=put[n-1]*5;
}
}
int caut(int x)
{
for (int i=0;i<n;i++)
if(nr[i]<=x&&nr[i+1]>x)
return i;
return -1;
}
int rez(int p)
{
int r=0,i;
while(p)
{
i=caut(p);
r=r+p/nr[i]*put[i];
p=p%nr[i];
}
return r;
}
int main()
{
int p,dan;
init();
//nt put[20]; nr[20];
FILE *in=fopen("fact.in","r");
fscanf(in,"%d",&p);
dan=rez(p);
FILE *out=fopen("fact.out","w");
if (dan==rez(p+1)) fprintf(out,"-1\n");
else fprintf(out,"%d\n",dan);
fclose(in);
fclose(out);
return 0;
}