|
发表于 2016-6-29 10:31:33
|
显示全部楼层
- # -*- coding:Utf-8 -*-
- import time
- start= time.clock()
- num=1000000
- list=[0,1,2,3,4,5,6,7,8,9]
- fact_sum=1
- dict_fact={0:1}# 存放阶乘结果
- for i in range(1,len(list)+1):
- fact_sum=fact_sum*i
- dict_fact[i]=fact_sum
- rel_str=''# 存放结果字符串
- for j in range(len(list),0,-1):
- if num>=dict_fact[j-1] and num%dict_fact[j-1]==0:
- rel_str+=str(list[int(num/dict_fact[j-1]-1)])
- list.pop(int(num/dict_fact[j-1]-1))
- if len(list)>0:
- for i in range(len(list),0,-1):
- rel_str+=str(list[i-1])
- break
- elif num>=dict_fact[j-1] and num%dict_fact[j-1]!=0:
- rel_str+=str(list[int(num/dict_fact[j-1])])
- list.pop(int(num/dict_fact[j-1]))
- num=num-dict_fact[j-1]*(int(num/dict_fact[j-1]))
- elif num<dict_fact[j-1]:
- rel_str+=str(list[0])
- list.pop(0)
- print(rel_str)
- end = time.clock()
- print ("read: %f s" % (end - start))
复制代码
结果是:2783915460 |
评分
-
查看全部评分
|