PT讨厌合数
题号:NC291325
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}对于给定的三个整数 n,m,k,你需要构造一个 nm 列的网格,每一个格子中填入一个整数,满足以下所有条件:
\hspace{23pt}\bullet\,格子中的所有数互不相同,且格子中的每个数在 [1,k] 的区间内。
\hspace{23pt}\bullet\,小牛要从网格左上角走到右下角,每次只能向下或向右移动一格,小牛在初始位置有个空集合 \Bbb S,记当前小牛位于的格子上的数字为 a,记小牛想移动到的下一个格子上的数字为 b,当满足 \gcd(a,b) 的值为质数或者为 1,且没有在集合 \Bbb S 中出现过,小牛才被允许走到此位置,然后将 \gcd(a,b) 存入集合 \Bbb S 中。
\hspace{23pt}\bullet\,遵循上述行走规则,至少存在一条路径可以使得小牛胜利到达终点。

\hspace{15pt}同时,您所构造的网格在满足以上条件的情况下,还需要保证格子中所有值的最大值要最小。
\hspace{15pt}如果不存在符合条件的构造方案,直接输出 -1;否则,输出您所构造的网格方案,同时指出一条可以使得小牛胜利到达终点的路径。

【名词解释】
\hspace{15pt}\gcd,即最大公因数,指两个整数共有约数中最大的一个。例如,1230 的公约数有 1,2,3,6,其中最大的约数是 6,因此 \gcd(12,30)=6

本题纯净版 Markdown 提供如下。
# D.PT讨厌合数

## 题目描述

$\hspace{15pt}$对于给定的三个整数 $n,m,k$,你需要构造一个 $n$ 行 $m$ 列的网格,每一个格子中填入一个整数,满足以下所有条件:  
$\hspace{23pt}\bullet\,$格子中的所有数互不相同,且格子中的每个数在 $[1,k]$ 的区间内。  
$\hspace{23pt}\bullet\,$小牛要从网格左上角走到右下角,每次只能向下或向右移动一格,小牛在初始位置有个空集合 $\Bbb S$,记当前小牛位于的格子上的数字为 $a$,记小牛想移动到的下一个格子上的数字为 $b$,当满足 $\gcd(a,b)$ 的值为质数或者为 $1$,且没有在集合 $\Bbb S$ 中出现过,小牛才被允许走到此位置,然后将 $\gcd(a,b)$ 存入集合 $\Bbb S$ 中。
$\hspace{23pt}\bullet\,$遵循上述行走规则,至少存在一条路径可以使得小牛胜利到达终点。

$\hspace{15pt}$同时,您所构造的网格在满足以上条件的情况下,还需要保证格子中所有值的最大值要最小。  
$\hspace{15pt}$如果不存在符合条件的构造方案,直接输出 $-1$;否则,输出您所构造的网格方案,同时指出一条可以使得小牛胜利到达终点的路径。  

【名词解释】
$\hspace{15pt}$$\gcd$,即最大公因数,指两个整数共有约数中最大的一个。例如,$12$ 和 $30$ 的公约数有 $1,2,3,6$,其中最大的约数是 $6$,因此 $\gcd(12,30)=6$。

## 输入描述

$\hspace{15pt}$在一行上输入三个整数 $n, m ,k \left(1 \leq n,m \leq 2 \times 10^3;\ 1 \leq k \leq 10^9\right)$ 代表方格的大小、方格值的选取范围。

## 输出描述

$\hspace{15pt}$如果不存在符合条件的构造方案,直接输出 $-1$。  
  
$\hspace{15pt}$否则,请参考下方的格式输出。  
$\hspace{15pt}$第一行输出一个整数 $p$ 代表方格中的最大值。  
$\hspace{15pt}$随后 $n$ 行,每行输出 $m$ 个整数,代表方格中的值。  
$\hspace{15pt}$随后 $n+m-1$ 行,每行输出两个整数 $x,y$ 代表一条满足条件的,从左上角移动到右下角的路径。  
  
$\hspace{15pt}$如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

## 样例

~~~text input:#1
1 2 2
~~~

~~~text output:#1
2
1 2
1 1
1 2
~~~

$\hspace{15pt}$在这个样例中,有且仅有两种矩阵的构造方式:$\begin{bmatrix}1 & 2\end{bmatrix}$ 和 $\begin{bmatrix}2 & 1\end{bmatrix}$。这两个方案均满足全部条件,输出任意一个即可。

~~~text input:#2
5 5 10
~~~

~~~text output:#2
-1
~~~

$\hspace{15pt}$在这个样例中,可以发现 $1$ 到 $10$ 以内的质数只有 $2,3,5,7$ 四个,不够用,所以输出 $-1$。

~~~text input:#3
4 4 100
~~~

~~~text output:#3
22
18 21 14 15
9 8 5 10
16 19 2 22
1 4 13 11
1 1
1 2
1 3
1 4
2 4
3 4
4 4
~~~

$\hspace{15pt}$在这个样例中,构造的矩阵如公式所示,其中,橙色的数字为路线经过的地方:$\begin{bmatrix}
{\color{orange}{18}} & {\color{orange}{21}} & {\color{orange}{14}} & {\color{orange}{15}}\\
9 & 8 & 5 & {\color{orange}{10}}\\
16 & 19 & 2 & {\color{orange}{22}}\\
1 & 4 & 13 & {\color{orange}{11}}
\end{bmatrix}$。  
$\hspace{15pt}$具体地:  
$\hspace{23pt}\bullet\,$当走到 $(1,2)$ 时,$\gcd(18,21)=3$,$\Bbb S = \{3\}$;  
$\hspace{23pt}\bullet\,$当走到 $(1,3)$ 时,$\gcd(21,14)=7$,$\Bbb S = \{3,7\}$;  
$\hspace{23pt}\bullet\,$当走到 $(1,4)$ 时,$\gcd(14,15)=1$,$\Bbb S = \{3,7,1\}$;  
$\hspace{23pt}\bullet\,$当走到 $(2,4)$ 时,$\gcd(15,10)=5$,$\Bbb S = \{3,7,1,5\}$;  
$\hspace{23pt}\bullet\,$当走到 $(3,4)$ 时,$\gcd(10,22)=2$,$\Bbb S = \{3,7,1,5,2\}$;  
$\hspace{23pt}\bullet\,$当走到 $(4,4)$ 时,$\gcd(22,11)=11$,$\Bbb S = \{3,7,1,5,2,11\}$。  
$\hspace{15pt}$综上,方案成立。

输入描述:

\hspace{15pt}在一行上输入三个整数 n, m ,k \left(1 \leq n,m \leq 2 \times 10^3;\ 1 \leq k \leq 10^9\right) 代表方格的大小、方格值的选取范围。

输出描述:

\hspace{15pt}如果不存在符合条件的构造方案,直接输出 -1

\hspace{15pt}否则,请参考下方的格式输出。
\hspace{15pt}第一行输出一个整数 p 代表方格中的最大值。
\hspace{15pt}随后 n 行,每行输出 m 个整数,代表方格中的值。
\hspace{15pt}随后 n+m-1 行,每行输出两个整数 x,y 代表一条满足条件的,从左上角移动到右下角的路径。

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

输入

复制
1 2 2

输出

复制
2
1 2
1 1
1 2

说明

\hspace{15pt}在这个样例中,有且仅有两种矩阵的构造方式:\begin{bmatrix}1 & 2\end{bmatrix}\begin{bmatrix}2 & 1\end{bmatrix}。这两个方案均满足全部条件,输出任意一个即可。
示例2

输入

复制
5 5 10

输出

复制
-1

说明

\hspace{15pt}在这个样例中,可以发现 110 以内的质数只有 2,3,5,7 四个,不够用,所以输出 -1
示例3

输入

复制
4 4 100

输出

复制
22
18 21 14 15
9 8 5 10
16 19 2 22
1 4 13 11
1 1
1 2
1 3
1 4
2 4
3 4
4 4

说明

\hspace{15pt}在这个样例中,构造的矩阵如公式所示,其中,橙色的数字为路线经过的地方:\begin{bmatrix}<br />{\color{orange}{18}} & {\color{orange}{21}} & {\color{orange}{14}} & {\color{orange}{15}}\\<br />9 & 8 & 5 & {\color{orange}{10}}\\<br />16 & 19 & 2 & {\color{orange}{22}}\\<br />1 & 4 & 13 & {\color{orange}{11}}<br />\end{bmatrix}
\hspace{15pt}具体地:
\hspace{23pt}\bullet\,当走到 (1,2) 时,\gcd(18,21)=3\Bbb S = \{3\}
\hspace{23pt}\bullet\,当走到 (1,3) 时,\gcd(21,14)=7\Bbb S = \{3,7\}
\hspace{23pt}\bullet\,当走到 (1,4) 时,\gcd(14,15)=1\Bbb S = \{3,7,1\}
\hspace{23pt}\bullet\,当走到 (2,4) 时,\gcd(15,10)=5\Bbb S = \{3,7,1,5\}
\hspace{23pt}\bullet\,当走到 (3,4) 时,\gcd(10,22)=2\Bbb S = \{3,7,1,5,2\}
\hspace{23pt}\bullet\,当走到 (4,4) 时,\gcd(22,11)=11\Bbb S = \{3,7,1,5,2,11\}
\hspace{15pt}综上,方案成立。