python
2783915460
Time:0.0s'''
题目:
排列是一个物体的有序安排。例如 3124 是 1, 2, 3, 4 的一种排列。
如果所有的排列按照数值或者字母序排序,我们称其为一个字典序。0, 1, 2 的字典排列有:
012 021 102 120 201 210
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 的第 100 万个字典排列是什么?
'''
import time
tt=time.time()
num=1000000
a='0, 1, 2, 3, 4, 5, 6, 7, 8, 9'
a=a.split(", ")
n=len(a)
# num0=num-1
# nn=1
# for i in range(1,n+1):
# nn=nn*i
# l=[]
# for i in range(n,0,-1):
# nn=nn//i
# l.append(num0//nn)
# num0=num0%nn
# print(l)
num0=num-1
l=[]
for i in range(1,n+1):
l.append(num0%i)
num0=num0//i
l=l[-1::-1]
print(l)
b=[]
for i in l:
b.append(a.pop(i))
print("".join(b))
print('Time:{}s'.format(time.time()-tt))
最后一个for循环感觉不是很优雅。列表的pop(i)消耗比较大,但我想不出更好的办法 |