Pagini recente » Cod sursa (job #462316) | Cod sursa (job #2902960) | Cod sursa (job #2658971) | Cod sursa (job #2392308) | Cod sursa (job #70528)
Cod sursa(job #70528)
#include<stdio.h>
#include<string.h>
int p[100020],C[100010],fac[100010];
void mul(int A[100010], int B[100010])
{
int i, j, t;
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; i++)
{
for (t=0, j=1; 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;
}
// memcpy(A, C, sizeof(C));
}
void apel(int a,int b)
{
int A[2],B[100010],k1;
k1=1;
p[1]=-1;
p[0]=1;
for(int i=0;i<100010;i++)
{
B[i]=0;
C[i]=0;
}
A[0]=1;
A[1]=2;
B[0]=1;
B[1]=1;
for(int i=0;i<b;i++)
{
mul(A,B);
for(int j=0;j<=C[0];j++)
B[j]=C[j];
}
}
void init(int c[100010])
{
for(int i=0;i<100010;i++)
c[i]=0;
}
int main()
{
FILE *f=fopen("patrate2.in","r"),*g=fopen("patrate2.out","w");
int a,b,c1[100010],k1=1,c2[100010],c3[100010],k3=1,i,i2;
fscanf(f,"%d",&b);
a=2;
apel(a,b*b);
for(int i1=1;i1<=C[0];i1++)
c1[k1++]=C[i1];
c1[0]=k1-1;
c2[0]=1;
c2[1]=1;
for(i=2;i<=b;i++)
{
i2=i;
while(i2)
{
c3[k3++]=i2%10;
i2/=10;
}
c3[0]=k3-1;
mul(c2,c3);
memcpy(c2,C,sizeof(C));
init(C);
init(c3);
k3=1;
}
mul(c1,c2);
for(int i1=C[0];i1>=1;i1--)
fprintf(g,"%d",C[i1]);
fprintf(g,"\n");
return 0;
}