题目描述
给你一个 n×n 的二维数组 a,然后依次对这个二维数组执行 q 次操作,每个操作都是以下七种旋操作中的一种:
- 把最上面一行平移到最下面。
- 把最下面一行平移到最上面。
- 把最左边一列平移到最右边。
- 把最右边一列平移到最左边。
- 顺时针旋转 90°。
- 顺时针旋转 180°。
- 顺时针旋转 270°。
每次操作结束后,你都要输出当前的a。
输入格式
从文件rotate.in
中读入数据。
第一行,两个正整数n, q。
接下来n行,每行n个正整数,表示二维数组a。
接下来一行,q$ 个值为 1∼7 的正整数,表示执行操作的编号。$
输出格式
输出到文件rotate.out
中。
共q个二维数组,表示每次操作后的a。
每个二维数组都有n行,每行n个整数。
每两个相邻的二维数组之间都要一行空行分割。
样例 1
输入
3 7
1 2 3
4 5 6
7 8 9
1 2 3 4 5 6 7
输出
4 5 6
7 8 9
1 2 3
1 2 3
4 5 6
7 8 9
2 3 1
5 6 4
8 9 7
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
3 6 9
2 5 8
1 4 7
9 8 7
6 5 4
3 2 1
样例 2
输入
3 3
1 1 1
2 2 2
3 3 3
1 1 1
输出
2 2 2
3 3 3
1 1 1
3 3 3
1 1 1
2 2 2
1 1 1
2 2 2
3 3 3
样例 3
输入
rotate3
输出
见下发文件中的 rotate3.out
样例 4
输入
见下发文件中的 rotate4.in
输出
见下发文件中的 rotate4.out
数据范围与提示
$本题共五个测试点,每个测试点都有 20 分。$
第一个测试点,满足n = 1。
第二个测试点,保证只有前四种旋操作出现。
第三个测试点,保证只有后三种旋操作出现。
对于前四个测试点,n ⩽ 10, q⩽20。
对于所有的测试点,1⩽n,q⩽100,1⩽a 中的元素 ⩽n2。