一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指——拇指、食指、中指、无名指和小指分别编号为 1 2 3 4 5当它们按正常顺序排列时,形成了 55 位数 1234512345,当你交换无名指和小指的位置时,会形成 55 位数 1235412354,当你把五个手指的顺序完全颠倒时,会形成 5432154321,在所有能够形成的 120120 个 55 位数中,1234512345 最小,它表示 11 ;1235412354 第二小,它表示 22 ;5432154321 最大,它表示 120120。下表展示了只有 33 根手指时能够形成的 66 个 33 位数和它们代表的数字:
输出描述
输出一行,这一行含有 NN 个整数,表示改变后的火星人手指的排列顺序。每两个相邻的数中间用一个空格分开,不能有多余的空格。
输入
5
3
1 2 3 4 5
输出
1 2 4 5 3
import itertools
n = int(input())
b = int(input())
a = tuple(map(int,input().split()))
tmp = [int(i) for i in range(1,n+1)]
lst = []
for x in itertools.permutations(tmp,r=None):
lst.append(x)
ret = lst.index(a)
print(*lst[ret+b])
sample中的没问题,但是交上去超出内存了
import itertools
n = int(input(">>>"))
b = int(input(">>>"))
a = tuple(map(int,input(">>>").split()))
tmp = range(1,n+1)
i = 0
for x in itertools.permutations(tmp,r=None):
if x == a:
i = 1
if i == b:
print(x)
break
i += 1