Pagini recente » Cod sursa (job #1644333) | Cod sursa (job #2735333) | Cod sursa (job #308482) | Cod sursa (job #1942012) | Cod sursa (job #319320)
Cod sursa(job #319320)
#include <cstdio>
#include <cstring>
#define file_in "patrate2.in"
#define file_out "patrate2.out"
#define BASE 10
#define Nmax 10001
int a[Nmax],b[Nmax],sol[Nmax],n;
void citire()
{
int i,p,l;
char s[Nmax];
scanf("%s", s);
l = strlen(s);
n=0;
for (i = 1; i <= l; i++)
{
++a[0];
//for (j = 8; j >= 0; --j)
if (l - i>= 0)
a[a[0]] = a[a[0]] * 10 + s[l - i] - '0';
//n=n*10+s[i]-'0';
}
n=0;
i=1;
while(i<=l)
{
n=n*10+s[i]-'0';
i++;
}
}
inline void MUL(int A[], int B[], int C[])
{
int i, j, t;
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; ++i)
{
t = 0;
for (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 mul(int A[], int b)
{
int i, t;
for (i = 1, t = 0; i <= A[0] || t; ++i, t /= BASE)
A[i] = (t += b * A[i]) % BASE;
A[0] = i - 1;
}
void scrie(int a[])
{
int i;
//printf("%d", a[a[0]]);
for (i = a[0]; i >= 1; --i)
printf("%d", a[i]);
printf("\n");
}
int main()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
citire();
sol[0]=sol[1]=1;
for (i = 1; i <= n*n; ++i)
mul(sol,2);
MUL(a,sol,b);
scrie(b);
//printf("%d", n);
fclose(stdin);
fclose(stdout);
return 0;
}