Pagini recente » Rating Denis Florentin Gheorghe (denis48) | Cod sursa (job #1576544) | Cod sursa (job #15748) | Cod sursa (job #114595) | Cod sursa (job #116444)
Cod sursa(job #116444)
#include<stdio.h>
#include<time.h>
//#include<iostream.h>
//#include<conio.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;
//a=clock();
int c=1,i;
//int a1[100],a2[100],i,o,r,n=1,n2;
fscanf(fin,"%s",&a);
p=0;
while (a[m]!='\0')
{
p=p*10+intreg(a[m]);
m++;
}
/*while (p>0)
{
o=1;
a[1]+=5;
while (a[o]>=10)
{
a[o]=a[o]%10;
a[o+1]++;
o++;
}
if (n<o) n=o;
for ( 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/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--;
// 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;*/
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]);
}
//b=clock();
//cout<<(b-a)/CLK_TCK;
fclose(fin);
fclose(fout);
return 0;
}