#include<stdlib.h>
#include<math.h>
void map(int);
int pardon(int, int*);
int a[1024][1024] = { 0 };
int main(void)
{
int n, i, j, m;
int* q = NULL;
scanf("%d", &n);
map(n);
////////
q = a[0];
pardon(n, q);
m = pow(2, n);
for (i = 0; i < m; i++) {
for (j = 0; j < m; j++)
printf("%d", a[i][j]);
printf("\n");
}
getchar();
getchar();
return 0;
}
void map(int n)
{
int m, i, j;
m = pow(2, n);
for (i = 0; i < m; i++)
for (j = 0; j < m; j++)
a[i][j] = 1;
}
int pardon(int n, int* q)
{
int* i = NULL, j, m = pow(2, n -1);
int* p[4] = { NULL,NULL,NULL,NULL };
//定每一个矩阵的位置
p[0] = q, p[1] = q + m /*+ 1*//*同行第二个单元*/, p[2] = q + 1024 * (m /*+ 1*/)/*同列的第二个单元*/, p[3] = q + 1024 * (m /*+ 1*/) + m /*+ 1*/;
if (n == 1)
{
*q = 0;
return 0;
}
else
{
/*code*/
for (i = q; i < q + m; i++)///
for (j = 0; j < m; j++)
*(i + 1024 * j) = 0;
// pardon(n - 1,p[0]);
pardon(n - 1, p[1]);
pardon(n - 1, p[2]);
pardon(n - 1, p[3]);
return 0;
}
}