Pagini recente » Cod sursa (job #725983) | Cod sursa (job #2635456) | Cod sursa (job #696990) | Cod sursa (job #2945742) | Cod sursa (job #209811)
Cod sursa(job #209811)
#include <stdio.h>
#define Lmax 1024
#define BASE 10
//formula este (2^n*n)*n
//unde n<=100
int n;
int sol[Lmax],sol1[Lmax];
void citire()//citesc numarul
{
freopen("patrate2.in","rt",stdin);
scanf("%d\n", &n);
}
void init(int H[], unsigned long X) //initializez vectorul H cu un scalar
{
H[0]=0;
while(X)
{
++H[0];
H[H[0]]=X%BASE;
X/=BASE;
}
}
void mul2(int A[])//inmultire cu 2
{
int i, t;
for (i=1,t=0;i<=A[0] || t;++i,t/=BASE)
A[i]=(t+=2*A[i])%BASE;
A[0]=i-1;
}
void mul(int A[],int B[])//inmultire a doi vectori
{
int i, t;
for (i=1,t=0;i<=A[0] || i<=B[0] || t;++i,t/=BASE)
A[i]=(t+=B[i]*A[i])%BASE;
A[0]=i-1;
}
void scrie(int A[])//afisez vectorul
{
int i;
freopen("patrate2.out", "w", stdout);
printf("%d", A[A[0]]);
for (i=A[0]-1;i>=1;--i)
printf("%.6d",A[i]);
printf("\n");
}
void solve()
{
int i;
//in sol1 l-am initializat pe n
init(sol1,n);
sol[0]=sol[1]=1;
for (i=1;i<=n*n;++i)
mul2(sol);//2^n*n
mul(sol,sol1);//inmultesc pe 2^n*n cu n
scrie(sol);//afisez rezultatul
}
int main()
{
citire();
solve();
return 0;
}