题意:
打印一个n*n的矩阵,里面只有1和0,里面的1不可以四角构成一个矩形。
题解:
根据杜神的指导,可以知道这种构建方法:
1000000 1000000 1000000 1000000 1000000 1000000 1000000
0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0
1000000 0100000 0010000 0001000 0000100 0000010 0000001
0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1
1000000 0010000 0000100 0000001 0100000 0001000 0000010
0 +2 2 +2 4 +2 6 +2 1 +2 3 +2 5 +2
1000000 0001000 0000001 0010000 0000010 0100000 0000100
0 +3 3 +3 6 +3 2 +3 5 +3 1 +3 4 +3
1000000 0000100 0100000 0000010 0010000 0000001 0001000
以此类推
1000000 0000010 0001000 0100000 0000001 0000100 0010000
1000000 0000001 0000010 0000100 0001000 0010000 0100000
0100000 0100000 0100000 0100000 0100000 0100000 0100000
0100000 0010000 0001000 0000100 0000010 0000001 1000000
0100000 0001000 0000010 1000000 0010000 0000100 0000001
0100000 0000100 1000000 0001000 0000001 0010000 0000010
0100000 0000010 0010000 0000001 0001000 1000000 0000100
0100000 0000001 0000100 0010000 1000000 0000010 0001000
0100000 1000000 0000001 0000010 0000100 0001000 0010000
0010000 0010000 0010000 0010000 0010000 0010000 0010000
0010000 0001000 0000100 0000010 0000001 1000000 0100000
0010000 0000100 0000001 0100000 0001000 0000010 1000000
0010000 0000010 0100000 0000100 1000000 0001000 0000001
0010000 0000001 0001000 1000000 0000100 0100000 0000010
0010000 1000000 0000010 0001000 0100000 0000001 0000100
0010000 0100000 1000000 0000001 0000010 0000100 0001000
0001000 0001000 0001000 0001000 0001000 0001000 0001000
0001000 0000100 0000010 0000001 1000000 0100000 0010000
0001000 0000010 1000000 0010000 0000100 0000001 0100000
0001000 0000001 0010000 0000010 0100000 0000100 1000000
0001000 1000000 0000100 0100000 0000010 0010000 0000001
0001000 0100000 0000001 0000100 0010000 1000000 0000010
0001000 0010000 0100000 1000000 0000001 0000010 0000100
0000100 0000100 0000100 0000100 0000100 0000100 0000100
0000100 0000010 0000001 1000000 0100000 0010000 0001000
0000100 0000001 0100000 0001000 0000010 1000000 0010000
0000100 1000000 0001000 0000001 0010000 0000010 0100000
0000100 0100000 0000010 0010000 0000001 0001000 1000000
0000100 0010000 1000000 0000010 0001000 0100000 0000001
0000100 0001000 0010000 0100000 1000000 0000001 0000010
0000010 0000010 0000010 0000010 0000010 0000010 0000010
0000010 0000001 1000000 0100000 0010000 0001000 0000100
0000010 1000000 0010000 0000100 0000001 0100000 0001000
0000010 0100000 0000100 1000000 0001000 0000001 0010000
0000010 0010000 0000001 0001000 1000000 0000100 0100000
0000010 0001000 0100000 0000001 0000100 0010000 1000000
0000010 0000100 0001000 0010000 0100000 1000000 0000001
0000001 0000001 0000001 0000001 0000001 0000001 0000001
0000001 1000000 0100000 0010000 0001000 0000100 0000010
0000001 0100000 0001000 0000010 1000000 0010000 0000100
0000001 0010000 0000010 0100000 0000100 1000000 0001000
0000001 0001000 1000000 0000100 0100000 0000010 0010000
0000001 0000100 0010000 1000000 0000010 0001000 0100000
0000001 0000010 0000100 0001000 0010000 0100000 1000000
代码如下:
#include <bits/stdc++.h>
using namespace std;
int mapp[47*47+5][47*47+5];
int main(){
memset(mapp, 0, sizeof(mapp));
int n = 47;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
for(int k = 0; k < n; k++){
mapp[i*n+j][k*n+((k*j)+i)%n] = 1;
}
}
}
printf("2000\n");
//有85105个 1
for(int i = 0; i < 2000; i++){
for(int j = 0; j < 2000; j++){
printf("%d", mapp[i][j]);
}
printf("\n");
}
}