Pagini recente » Cod sursa (job #2831399) | Cod sursa (job #2020219) | Cod sursa (job #1858279) | Cod sursa (job #426114) | Cod sursa (job #424867)
Cod sursa(job #424867)
#include<stdio.h>
#define Nmax 50010
int doi[Nmax],fact[Nmax],aux[Nmax],n,N,i,Aux;
void copiaza(int a[], int b[])
{
int i,n=b[0];
for(i=0;i<=n;i++)
a[i]=b[i];
}
void inmulteste (int a[], int b[])
{
int i,j,t,c[Nmax];
for(i=0;i<Nmax;i++)
c[i]=0;
for(i=1;i<=a[0];i++)
{
for(j=1,t=0; j<=b[0]||t; j++,t/=10)
c[i+j-1] = (t+= c[i+j-1] + a[i]*b[j] ) %10;
if(i+j-2>c[0]) c[0]=i+j-2;
}
copiaza(a,c);
}
int main()
{
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
scanf("%d",&n);
doi[0]=1;
doi[1]=1;
fact[0]=1;
fact[1]=1;
aux[0]=1;
aux[1]=2;
N=n*n;
while(N)
{
if(N&1)
inmulteste(doi,aux);
inmulteste(aux,aux);
N>>=1;
}
for(i=1;i<=n;i++)
{
Aux=i; aux[0]=0;
while(Aux)
{
aux[++aux[0]]=Aux%10;
Aux/=10;
}
inmulteste(fact,aux);
}
inmulteste(fact,doi);
for(i=fact[0];i;i--)
printf("%d",fact[i]);
return 0;
}