01矩阵
题号:NC300658
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}Bingbong 从哆啦A梦那里得知,一个仅由 \texttt{0}\texttt{1} 组成的 n 阶矩阵 \boldsymbol{A} 是好的,当且仅当满足以下所有条件:
\hspace{23pt}\bullet\,记第 i\left(1\leq i\leq n\right) 行的数字和为 \text{row}_i\text{row} 集合仅由 0\sim n-1 的整数组成,且每个数字仅出现一次。
\hspace{23pt}\bullet\,记第 j\left(1\leq j\leq n\right) 列的数字和为 \text{col}_j\text{col} 集合仅由 0\sim n-1 的整数组成,且每个数字仅出现一次。
\hspace{23pt}\bullet\,该矩阵中 \texttt{0}连通块个数和 \texttt{1} 的连通块个数总和恰好为 n 个。
\hspace{15pt}现在大雄给定一个整数 n,你需要帮助 Bingbong 画出该矩阵,保证在上述条件约束下始终存在符合条件的 n 阶矩阵。

【名词解释】
\hspace{15pt}连通块:在网格中,若两个坐标间的曼哈顿距离为 1 则视为相邻。由数值相等的格子按该相邻关系划分的极大连通子集称为一个连通块。

输入描述:

\hspace{15pt}输入一个整数 n\left(1\leq n\leq 10^3\right),表示矩阵的边长大小。

输出描述:

\hspace{15pt}一共 n 行,第 i 行输出一个长度为 n、仅由字符 \texttt{0}\texttt{1} 构成的字符串,表示矩阵的第 i 行。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2

输出

复制
01
00

说明

\hspace{15pt}在这个样例中,第一行和为 1,第二行和为 0。第一列和为 0,第二列和为 1。均满足仅由 \{0,1\} 组成且每个数字出现一次。此时连通块个数 2 个,符合题意。

\hspace{15pt}当然,以下矩阵也是符合题意的:\begin{bmatrix}<br />1 & 0\\<br />0 &0 \\<br />\end{bmatrix}\begin{bmatrix}<br />0 & 0\\<br />1 &0 \\<br />\end{bmatrix}\begin{bmatrix}<br />0 & 0\\<br />0 &1 \\<br />\end{bmatrix}
示例2

输入

复制
4

输出

复制
0001
0000
0011
1011