#967. 希蒙的旋转
希蒙的旋转
题目背景
我们称一个数列 是一个长度为 的排列,当且仅当 满足如下条件:
- 的长度为 ;
- 这 个数在 中均恰好出现一次。
题目描述
对于一个排列 ,定义一次“shift”操作是指:将 里的每一个数字都依次向后移动一位,并把 的最后一个数字移动到开头去。
例如,若排列 初始时为 ,则“shift”一次以后将变为 。
现在,给定一个长度为 的排列 ,请你按照如下规定循环操作:
- 对当前的排列 做一次“shift”操作;
- 输出本次“shift”以后的排列 ;
- 判断排列 的最后一个数字是否是 ,如果是,则结束循环操作;否则回到 继续操作。
提示:请严格按照题目给出的顺序进行循环操作。
输入格式
第一行是一个整数,表示排列 的长度 。
第二行有 个整数表示排列 ,第 个整数表示 。
输出格式
对于每次操作的第二条“输出”操作,请你输出一行 个整数,按顺序表示当前排列的每个数,一行中相邻两个数之间用一个空格隔开。
样例 #1
样例输入 #1
4
1 4 2 3
样例输出 #1
3 1 4 2
2 3 1 4
样例 #2
样例输入 #2
3
1 2 3
样例输出 #2
3 1 2
2 3 1
1 2 3
样例 #3
样例输入 #3
10
1 7 6 5 8 4 3 9 10 2
样例输出 #3
2 1 7 6 5 8 4 3 9 10
提示
样例 2 解释
对 ,按如下顺序进行循环操作:
- 进行一次“shift”操作, 变为 ;
- 输出当前的排列 ,故输出第一行为
3 1 2
; - 判断 ,故继续循环操作;
- 进行一次“shift”操作, 变为 ;
- 输出当前的排列 ,故输出第二行为
2 3 1
; - 输出判断 ,故继续循环操作;
- 进行一次“shift”操作, 变为 ;
- 输出当前的排列 ,故输出第二行为
1 2 3
; - 输出判断 ,故停止循环;
数据规模与约定
各测试点的信息如下表: | 测试点编号 | | 特殊约定 | | :-: | :-: | :-: | | | | 无| | | | 无 | | | | 无 | | | | | | | | 无 |
对全部的测试点,保证 , 是长度为 的排列。