A305. 螺旋矩阵
编程题
普及/提高-
知识点
题目描述
一个 $n$ 行 $n$ 列的螺旋矩阵可由如下方法生成:
从矩阵的左上角(第 $1$ 行第 $1$ 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 $1, 2, 3, ... , n^2$,便构成了一个螺旋矩阵。
下图是一个 $n = 4$ 时的螺旋矩阵。
```
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
现给出矩阵大小 $n$ 以及 $i$ 和 $j$,请你求出该矩阵中第 $i$ 行第 $j$ 列的数是多少。
从矩阵的左上角(第 $1$ 行第 $1$ 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 $1, 2, 3, ... , n^2$,便构成了一个螺旋矩阵。
下图是一个 $n = 4$ 时的螺旋矩阵。
```
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
现给出矩阵大小 $n$ 以及 $i$ 和 $j$,请你求出该矩阵中第 $i$ 行第 $j$ 列的数是多少。
输入格式
共一行,包含三个整数 $n$, $i$, $j$,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。
输出格式
一个整数,表示相应矩阵中第 $i$ 行第 $j$ 列的数。
输入输出样例
输入 #1
4 2 3
输出 #1
14
说明/提示
对于 $50\%$ 的数据,$1 \leqslant n \leqslant 100$;
对于 $100\%$ 的数据,$1 \leqslant n \leqslant 30,000,1 \leqslant i \leqslant n,1 \leqslant j \leqslant n$。
对于 $100\%$ 的数据,$1 \leqslant n \leqslant 30,000,1 \leqslant i \leqslant n,1 \leqslant j \leqslant n$。