Pagini recente » Formatare Textile | Cod sursa (job #1440263) | Cod sursa (job #1780546) | Cod sursa (job #1300846) | Cod sursa (job #248521)
Cod sursa(job #248521)
#include <stdio.h>
#include <string.h>
#define Lmax 1024
#define BASE 10
int n;
int sol[Lmax],sol1[Lmax],C[Lmax];
char s[Lmax];
void citire()
{
freopen("patrate2.in","t",stdin);
scanf("%d\n", &n);
}
void init(int H[], int X)
{
H[0]=0;
while(X)
{
++H[0];
H[H[0]]=X%BASE;
X/=BASE;
}
}
void mul2(int A[])
{
int i, t=0;
for (i=1;i<=A[0] || t;++i,t/=BASE)
A[i]=(t+=2*A[i])%BASE;
A[0]=i-1;
}
void mul(int A[], int B[])
{
int i, j;
int t;
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; i++)
{
for (t=0, j=1; j <= B[0] || t; j++, t/=BASE)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%BASE;
if (i + j - 2 > C[0]) C[0] = i + j - 2;
}
memcpy(A, C, sizeof(C));
}
void scrie(int A[])
{
int i;
freopen("patrate2.out", "w", stdout);
printf("%d", A[A[0]]);
for (i=A[0]-1;i>=1;--i)
printf("%d",A[i]);
printf("\n");
}
void solve()
{
int i;
init(sol1,n);
sol[0]=sol[1]=1;
for (i=1;i<=n*n;++i)
mul2(sol);
mul(sol,sol1);
scrie(sol);
}
int main()
{
citire();
solve();
return 0;
}