Pagini recente » Cod sursa (job #2685995) | Cod sursa (job #2297363) | Cod sursa (job #2216781) | Cod sursa (job #2601611) | Cod sursa (job #116449)
Cod sursa(job #116449)
#include<stdio.h>
#include<time.h>
int intreg(char a)
{
if (a=='0') return 0;
if (a=='1') return 1;
if (a=='2') return 2;
if (a=='3') return 3;
if (a=='4') return 4;
if (a=='5') return 5;
if (a=='6') return 6;
if (a=='7') return 7;
if (a=='8') return 8;
if (a=='9') return 9;
return 0;
}
int a[100];
int main()
{
//clrscr();
FILE *fin,*fout;
fin= fopen ("fact.in","r");
fout= fopen ("fact.out","w");
long int p,n=0,m;
char a[20];
m=0;
int c=1,i;
fscanf(fin,"%s",&a);
if (a[0]=='0') fprintf(fout,"%d",1);
else
{
p=0;
while (a[m]!='\0')
{
p=p*10+intreg(a[m]);
m++;
}
while (p/78125)
{
n+=78125;
p=p-19524;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p/15625)
{
n+=15625;
p=p-3900;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p/3125)
{
n+=3125;
p=p-776;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p/625)
{
n+=625;
p=p-152;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p/125)
{
n+=125;
p=p-28;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p/5)
{
n+=25;
p=p-4;
m=n;
while (m%5==0)
{
if (m%5==0) p--;
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
if (!c) break;
}
if (c)
while (p)
{
n++;
m=n;
while (m%5==0)
{
if (m%5==0)
{
p--;
}
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
}
int c1,v[10];
if (!c) fprintf (fout,"%d",-1);
else
{
c1=0;
while (n)
{
v[++c1]=n%10;
n/=10;
}
for (i=c1;i>=1;i--) fprintf (fout,"%d",v[i]);
}
}
fclose(fin);
fclose(fout);
return 0;
}