鱼C论坛

 找回密码
 立即注册
查看: 4526|回复: 17

[技术交流] 小练习:20160627 0,1,2,3,4,5,6,7,8,9的第100万个字典排列是什么

[复制链接]
发表于 2016-6-29 10:31:33 | 显示全部楼层
  1. # -*- coding:Utf-8 -*-
  2. import time
  3. start= time.clock()

  4. num=1000000
  5. list=[0,1,2,3,4,5,6,7,8,9]

  6. fact_sum=1
  7. dict_fact={0:1}# 存放阶乘结果
  8. for i in range(1,len(list)+1):
  9.     fact_sum=fact_sum*i
  10.     dict_fact[i]=fact_sum

  11. rel_str=''# 存放结果字符串
  12. for j in range(len(list),0,-1):
  13.     if num>=dict_fact[j-1] and num%dict_fact[j-1]==0:
  14.         rel_str+=str(list[int(num/dict_fact[j-1]-1)])
  15.         list.pop(int(num/dict_fact[j-1]-1))
  16.         if len(list)>0:
  17.             for i in range(len(list),0,-1):
  18.                 rel_str+=str(list[i-1])
  19.         break
  20.     elif num>=dict_fact[j-1] and num%dict_fact[j-1]!=0:
  21.         rel_str+=str(list[int(num/dict_fact[j-1])])
  22.         list.pop(int(num/dict_fact[j-1]))
  23.         num=num-dict_fact[j-1]*(int(num/dict_fact[j-1]))
  24.     elif num<dict_fact[j-1]:
  25.         rel_str+=str(list[0])
  26.         list.pop(0)

  27. print(rel_str)

  28. end = time.clock()
  29. print ("read: %f s" % (end - start))
复制代码


结果是:2783915460

评分

参与人数 1荣誉 +7 鱼币 +7 收起 理由
冬雪雪冬 + 7 + 7 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 06:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表