Pagini recente » Cod sursa (job #1117595) | Cod sursa (job #2370278) | Cod sursa (job #1158798) | Cod sursa (job #3208687) | Cod sursa (job #347083)
Cod sursa(job #347083)
#include<math.h>
#include<fstream.h>
ifstream fin("fact.in");
ofstream fout("fact.out");
long n,m,i,j,ct,s,a[100],b[100],c[200],aux,ct1,z,k,rez=1,n1,o,cif,co,crez;
int main()
{
fin>>k;
if(k==0)
fout<<1;
else
for(o=1;o<=12;o++)
rez=rez*o;
if(k<=12)
{
for(o=1;o<=k;o++)
rez=rez*o;
fout<<rez;
}
else
{
for(o=13;o<=k;o++)
{
if(o==13)
{
n=(long)log10(rez)+1;
crez=rez;
do
{
cif=crez%10;
n--;
a[n]=cif;
crez=crez/10;
}
while(crez);
n=(long)log10(rez)+1;
}
if(o!=13)
{
j=0;
for(i=n+m-1;i>=0;i--)
{
a[j]=c[i];
j++;
}
}
co=o;
m=(long)log10(o)+1;
do
{
cif=co%10;
m--;
b[m]=cif;
co=co/10;
}
while(co);
m=(long)log10(o)+1;
for(i=0;i<n/2;i++)
{
aux=a[i];
a[i]=a[n-i-1];
a[n-i-1]=aux;
}
for(j=0;j<m/2;j++)
{
aux=b[j];
b[j]=b[m-j-1];
b[m-j-1]=aux;
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
c[i+j]=c[i+j]+a[i]*b[j];
ct=c[0]/10;
c[0]=c[0]%10;
for(i=1;i<=n+m-1;i++)
{
s=c[i]+ct;
ct=s/10;
c[i]=s%10;
}
z=n+m-1;
for(i=n+m-1;i>=0;i--)
if(i==z)
if(c[i]==0)
z--;
else
fout<<c[i];
else
fout<<c[i];
}
}
return 0;
}