给定一个n长的数列,有m次操作,第i次操作表示将整个数列循环移动mi位,询问每次操作结束后的开头k个数字
时间: 2023-04-14 17:01:53 浏览: 250
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
你好!以下是回复:
对于每次操作,我们可以将数列分为两部分:前mi个数和后n-mi个数。然后将这两部分分别翻转,再将整个数列翻转,就可以得到移动mi位后的数列。
具体地,假设要将数列a循环移动mi位,可以按照以下步骤进行操作:
1. 将a的前mi个数翻转,得到b。
2. 将a的后n-mi个数翻转,得到c。
3. 将b和c拼接起来,得到d。
4. 将d整个翻转,得到e。
则e就是移动mi位后的数列。可以用以下代码实现:
```python
n, m = map(int, input().split())
a = list(map(int, input().split()))
for i in range(m):
mi = int(input())
b = a[:mi][::-1]
c = a[mi:][::-1]
d = b + c
e = d[::-1]
print(*e[:k])
```
其中,`[::-1]`表示将列表翻转,`*e[:k]`表示输出e的前k个元素。
阅读全文