#P15635. [2019年保加利亚国家队组队赛Senior]串行魔方阵

[2019年保加利亚国家队组队赛Senior]串行魔方阵

题目描述

“魔方阵”指的是这样一种方阵:其中填入一些数,使得每一行、每一列以及两条对角线上的元素和都相同,这个共同的值称为“幻和”。

这类方阵有许多经典例子。这里我们定义其中一个很有趣的子类,称为“串行魔方阵”。

给定一个奇数正整数 n。如果一个 n × n 的数表满足以下条件,我们称它为一个串行魔方阵

  • 其中恰好填入从 1n^2 的所有整数;
  • 它本身是一个魔方阵;
  • 去掉最外层边框之后,剩下的边长为 n - 2 的方阵仍然是魔方阵;
  • 继续不断去掉最外层边框,得到的方阵仍然始终是魔方阵,直到只剩下中心格子,而中心格子当然是一个平凡的魔方阵。

原题中给出的说明为:图中的 n = 7 串行魔方阵,其最外层 7 × 7 方阵的幻和为 175;去掉灰色外框后得到的 5 × 5 方阵幻和为 125;继续去框后得到的 3 × 3 方阵幻和为 75;最里面的中心格子的值为 25

手工构造这样的串行魔方阵并不容易。请编写程序 magsq,输出一个“串行性”尽可能强的魔方阵(评分方式见下文)。

输入格式

输入一行,一个奇数正整数 n

输出格式

输出 n 行,每行 n 个正整数,用空格分隔,表示一个尽可能具有“串行性”的魔方阵。

数据范围

  • n 为奇数,且 n ≤ 200

评分说明

输出结果在以下情况下一定得 0 分

  • 它没有包含从 1n^2 的所有整数,并将它们排成 n 行,每行 n 个整数;
  • 它不是一个魔方阵。

否则,该测试点一定获得该测试点分值的 10%

剩余的 90% 分数根据你的结果中有多少个边长为 n-2, n-4, …, 3 的内嵌方阵也是魔方阵来决定,也就是说,取决于你的构造距离真正的 n 阶串行魔方阵有多近。

若该测试点满分为 X,已验证的内嵌魔方阵个数(不含最外层和最中心的平凡方阵)为 k,则得分为:

X * (0.1 + 1.8 * k / (n - 3))

结果按一位小数计算。

样例输入

7

样例输出

22 1 2 15 42 47 46
5 23 10 12 41 39 45
21 20 24 19 32 30 29
36 34 33 25 17 16 14
43 37 18 31 26 13 7
44 11 40 38 9 27 6
4 49 48 35 8 3 28