矩阵重塑(其一)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
矩阵(二维)的重塑(reshape)操作是指改变矩阵的行数和列数,同时保持矩阵中元素的总数不变。
题目描述
矩阵的重塑操作可以具体定义为以下步骤:
设原矩阵为 ,其维度为 ,即有 行和 列。新矩阵为 ,其维度为 。重塑操作要满足 ,这保证了元素的总数不变。
- 线性化原矩阵:按照行优先的顺序,将原矩阵 的元素转换成一个长度为 的一维数组 。这意味着你先读取 的第 行元素,然后是第 行,依此类推,直到最后一行。
- 填充新矩阵:使用一维数组 中的元素按照行优先的顺序填充新矩阵 。首先填充 的第 行,直到该行有 个元素,然后继续填充第 行,直到所有 行都被填满。
给定原矩阵中的一个元素的位置 ( 且 ),我们可以找到这个元素在被线性化后的一维数组 中的位置 (),然后确定它在新矩阵 中的位置 ( 且 )。它们之间满足如下数学关系:
给定 的矩阵 和目标形状 、,试将 重塑为 的矩阵 。
输入格式
从标准输入读入数据。
输入共 行。
输入的第一行包含四个正整数 、 和 、。
接下来依次输入原矩阵 的第 到第 行,每行包含 个整数,按列下标从 到 的顺序依次给出。
输出格式
输出到标准输出。
输出共 行,每行 个整数,表示重塑后的矩阵 。输出格式与输入相同,即依次输出 的第 行到第 行;行内按列下标从 到 的顺序输出,且两个整数间仅用一个空格分隔。
样例1输入
2 3 3 2
1 2 3
4 5 6
样例1输出
1 2
3 4
5 6
样例2输入
2 2 1 4
6 6
6 6
样例2输出
6 6 6 6
子任务
全部的测试数据满足:
- 、 和 、 均为正整数且 ;
- 输入矩阵中每个元素的绝对值不超过 。