Pagini recente » Cod sursa (job #1515778) | Cod sursa (job #2192126) | Cod sursa (job #2601552) | Cod sursa (job #1329837) | Cod sursa (job #116396)
Cod sursa(job #116396)
#include<stdio.h>
int a[100];
int main()
{
FILE *fin,*fout;
fin= fopen ("fact.in","r");
fout= fopen ("fact.out","w");
long int p,m,n=1,n2;
int a1[100],a2[100];
fscanf(fin,"%D",&p);
while (p>0)
{
int o=1,r;
a[1]+=5;
while (a[o]>=10)
{
a[o]=a[o]%10;
a[o+1]++;
o++;
}
if (n<o) n=o;
for (int i=1;i<=n;i++) a1[i]=a[i];
n2=n;
while (a1[1]==0||a1[1]==5)
{
p--;
r=0;
o=n2;
if (a1[o]<5)
{
a2[o-1]=(a1[o]*10+a[o-1])/5;
r=(a1[o]*10+a[o-1])%5;
n2=o-1;
o=o-2;
}
else
{
a2[o]=a1[o]/5;
r=a1[o]%5;
o--;
}
while (o)
{
a2[o]=(r*10+a1[o])/5;
r=(r*10+a1[o])%5;
o--;
}
for (i=1;i<=n2;i++) a1[i]=a2[i];
}
}
/*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--;
c5++;
}
m/=5;
if (p==0&&m%5==0) c=0;
if (!c) break;
}
while (m%2==0)
{
if (m%2==0) c2++;
m/=2;
}
if (!c) break;
}
while (c&&c2<c5)
{
n++;
if (n%5==0) c=0;
m=n;
while (m%2==0)
{
if (m%2==0) c2++;
m/=2;
}
}
long int s=1;
while (p>0)
{
n++;
s=s*n;
while (s%10==0)
{
p--;
s/=10;
}
s=s%10;
}
int c0=0;
while (n%10==0)
{
c0++;
n/=10;
}
long inv=0;*/
if (p<0) fprintf (fout,"%d",-1);
else
{
for (int i=n;i>=1;i--) fprintf (fout,"%d",a[i]);
}
fclose(fin);
fclose(fout);
return 0;
}