P15513 [BalticOI 2003] Table (Day 1)

题目描述

对于给定整数 $M$,构造一个具有 $N$ 行和 $N$ 列的方形表格($2 \le N \le 10$),用十进制数字填充,并满足以下限制:由表格中每一行(从左到右)、每一列(从上到下)以及每一条主对角线(从上到下)的数字组成的 $N$ 位数必须是 $M$ 的倍数,且不能以数字 $0$ 开头,并且在表格内必须互不相同。 例如,当 $M = 2$ 时,一个有效的表格是 $$\begin{matrix}2&3&4\\5&6&6\\8&2&0\end{matrix}$$ 下面的表格在 $M = 2$ 时不是有效的: $$\begin{matrix}4\end{matrix}$$ 因为 $N < 2$; $$\begin{matrix}2&0\\4&8\end{matrix}$$ 因为最后一列以及其中一条主对角线上的数字组成的数以数字 $0$ 开头; $$\begin{matrix}2&3&4\\5&8&8\\2&0&2\end{matrix}$$ 因为数字 $482$ 在表格中出现了两次。 并非总是可以完成该任务。例如,当 $M = 10$ 时,该任务无解。

输入格式

给定十个测试文件 $\texttt{TABLE}x\texttt{.IN}$($1 ≤ x ≤ 10$,见题目附件),每个文件包含一个 $M$ 的值。

输出格式

你需要为每个测试用例找到一个有效的表格,并将其输出。第一行为 $N$,即表格的行数和列数。第 $i+1$ 行($1 ≤ i ≤ N$)为第 $i$ 行的元素,表示 $N$ 个数字,数字之间用空格分隔。

说明/提示

### 提示 已知对于每个给定的测试输入,至少存在一个解。 ### 评分 如果某个测试用例没有输出,或者未满足上述任何条件,则该测试用例得 $0$ 分。 否则,该测试用例的得分按以下公式计算: $$\text{该测试用例的满分} \times \frac{N _ {\text{所有参赛者中最小的}}}{N _ {\text{你的}}}$$ 并向下取整到最近的整数值。因此,你应当在满足条件的前提下,尽量找到尺寸尽可能小的有效表格。 > 请注意,本题的输出不是唯一的。另外,评分是相对的:每位参赛者的得分取决于其他参赛者在同一测试用例上的解答情况。对于某些测试用例,目前尚不清楚这里给出的表格是否确实是可能的最小尺寸。因此,这些输出文件基本上只证明:对于每个给定的测试用例,所要求的输出确实是存在的。