Pagini recente » Cod sursa (job #493546) | Cod sursa (job #1671848) | Cod sursa (job #946636) | Cod sursa (job #2143291) | Cod sursa (job #321612)
Cod sursa(job #321612)
#include <stdio.h>
FILE *f,*s;
long long int n,i,j,v1[10001],v2[10001];
void inmultire(long long int x[10001], long long int y)
{
long long T=0;
for(i=1;i<=x[0];i++)
{
x[i]=x[i]*y+T;
T=x[i]/10000000;
x[i]=x[i]%10000000;
}
while (T)
{
x[0]++;
x[x[0]]=T%10000000;
T/=10000000;
}
}
void inmultire2(long long int x[10001], long long int y[10001])
{
long long int T=0, R[10001];
R[0]=x[0]+y[0]-1;
for(i=1;i<=x[0]+y[0];) R[i++]=0;
for (i=1;i<=x[0];i++)
for (j=1;j<=y[0];j++)
R[i+j-1]+=x[i]*y[j];
for (i=1;i<=R[0];i++)
{
R[i]+=T;
T=R[i]/10000000;
R[i]%=10000000;
}
if (T)
{
R[0]++;
R[R[0]]=T;
}
x[0] = R[0];
for(i=1;i<=x[0];i++)
x[i]=R[i];
}
int main()
{
f=fopen("patrate2.in","r");
s=fopen("patrate2.out","w");
fscanf(f,"%lld",&n);
v1[0]=1;
v1[1]=2;
for(j=2;j<=n*n;j++)
inmultire(v1,2);
v2[0]=1;
v2[1]=1;
for(j=2;j<=n;j++)
inmultire(v2,j);
inmultire2(v2,v1);
fprintf(s,"%lld",v2[v2[0]]);
for(j=v2[0]-1;j>0;j--)
fprintf(s,"%07lld",v2[j]);
fclose(s);
return 0;
}