| 
 | 
 
 
发表于 2022-12-21 20:06:08
|
显示全部楼层
 
 
 
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)消耗比较大,但我想不出更好的办法 |   
 
 
 
 |