Pagini recente » Cod sursa (job #103779) | Cod sursa (job #2271631) | Cod sursa (job #1500640) | Cod sursa (job #1137846) | Cod sursa (job #679008)
Cod sursa(job #679008)
#include<stdio.h>
#include<string.h>
long n,i,a[10000],b[10000],c[10000];
void add(long a[],long b[])
{
long i,t=0;
for(i=1;i<=a[0]||i<=b[0]||t;i++,t/=10)
a[i]=(t+=a[i]+b[i])%10;
a[0]=i-1;
}
void mul(long a[],long b)
{
long i,t=0;
for(i=1;i<=a[0]||t;i++,t/=10)
a[i]=(t+=a[i]*b)%10;
a[0]=i-1;
}
int main()
{
freopen("petrecere.in","r",stdin);
freopen("petrecere.out","w",stdout);
scanf("%ld",&n);
if(n==1)printf("1\n");
if(n==2)printf("2\n");
if(n<3)return 0;
a[0]=a[1]=1;
b[0]=1;b[1]=2;
for(i=3;i<=n;++i)
{
memcpy(c,a,sizeof(a));
memcpy(a,b,sizeof(b));
mul(c,i-1);
add(b,c);
}
for(i=b[0];i;--i)
printf("%ld",b[i]);
printf("\n");
return 0;
}