[NOIP 1997 提高组] 棋盘问题
Submit solution
C++
Points:
100
Time limit:
1.0s
Memory limit:
256M
Author:
Problem type
Allowed languages
P1549 [NOIP 1997 提高组] 棋盘问题
题目背景
NOIP1997 提高组第一题
P5512 为本题数据加强版。
本题实际的数据的范围是 \(1\le N\le 5\)。不保证存在可以通过原数据范围的非打表做法。
题目描述
在 \(N \times N\)(\(1 \le N \le 10\))的棋盘上,填入 \(1, 2, \dots, N ^ 2\) 共 \(N ^ 2\) 个数,使得任意两个相邻的数之和为素数。
例如:当 \(N = 2\) 时,有:
| \(1\) | \(2\) |
|---|---|
| \(4\) | \(3\) |
其相邻数的和为素数的有:
\(1+2,1+4,4+3,2+3\)
当 \(N=4\) 时,一种可以填写的方案如下:
| \(1\) | \(2\) | \(11\) | \(12\) |
|---|---|---|---|
| \(16\) | \(15\) | \(8\) | \(5\) |
| \(13\) | \(4\) | \(9\) | \(14\) |
| \(6\) | \(7\) | \(10\) | \(3\) |
在这里我们约定:左上角的格子里必须填数字 \(1\)。
输入格式
一个数 \(N\)。
输出格式
如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则输出 NO。
输入输出样例 #1
输入 #1
1
输出 #1
NO
输入输出样例 #2
输入 #2
2
输出 #2
1 2
4 3
Comments