蛇形数阵
题目背景
小S最近迷上了蛇形矩阵。蛇形矩阵的生成方式为:从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动一格,然后向左下移动,直到碰到边界;如果下方是在范围内未出界的格子,则向下移动一格接着往右上移动,否则向右移动一格接着往右上移动,直到到达边界;接着,如果右边的格子在范围内,往右移动一格,否则向下移动一格,接着往左下直到边界;重复上述操作直至经过矩阵中所有格子。
就像这样
将1~15放进一个\(3*5\)的蛇形矩阵就像这样
\(1\) | \(2\) | \(6\) | \(7\) | \(12\) |
---|---|---|---|---|
\(3\) | \(5\) | \(8\) | \(11\) | \(13\) |
\(4\) | \(9\) | \(10\) | \(14\) | \(15\) |
题目描述
不管是什么时候,她都喜欢蛇形矩阵。
现在小S有一串数列: 1234567891011121314151617...
。就是把正整数 \(1,2,3,4\),... 写成一个大数。
她把其中的前 \(n*m\) 个数字放进了 \(n*m\) 的一个蛇形矩阵(多余的就舍弃了),这样就成了蛇形数阵,下面就是 \(3*5\) 的蛇形数阵:
\(1\) | \(2\) | \(6\) | \(7\) | \(1\) |
---|---|---|---|---|
\(3\) | \(5\) | \(8\) | \(0\) | \(1\) |
\(4\) | \(9\) | \(1\) | \(1\) | \(2\) |
现在,他想问这个蛇形矩阵中第 \(i\) 行,第 \(j\) 列是什么数字。
输入输出格式
输入格式
本题包含多组测试数据,第一行一个数 \(T\),表示数据总数。
每组数据共一行,4个整数,\(n\),\(m\),\(i\),\(j\),意义如题目所述。
输出格式
每个数据一行,表示这个蛇形矩阵第 \(i\) 行第 \(j\) 列的数字
样例 1
样例输入
3
3 5 2 2
100 100 88 88
123456789 123456789 7654321 1234567
Output
5
9
0
限制
时间限制1s,空间限制125MB
提示
样例说明
第 1 组数据就是题目描述中的矩阵。
数据范围(百分比为得分)
\(10\%\)的数据,\(1 \leq n,m \leq 10\)
\(30\%\)的数据,\(1 \leq n,m \leq 1000\)
\(60\%\)的数据,\(1 \leq n,m \leq 10^5\)
\(100\%\)的数据,\(T \leq 10, 1 \leq n,m \leq 10^9, 1 \leq i \leq n, 1 \leq j \leq m\)
另有\(2\%\)的数据,\(i=n,j=m\)
另有\(3\%\)的数据,\(n=1\)或\(m=1\)
提示
请换个角度看看这个矩阵。
信息
- ID
- 1005
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 4
- 已通过
- 2
- 通过率
- 50%
- 上传者