python解无忧公主的数学时间编程题001.py

本文通过两种方法解答了使用0-9这十个数字组成的所有排列中,字典序下第1,000,000个排列是什么。方法一利用Python的itertools.permutations函数结合enumerate进行快速定位;方法二则采用全排列后再排序的方式找到目标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python解无忧公主的数学时间编程题001.py

898917-20160331063612332-535049450.gif

"""
python解无忧公主的数学时间编程题001.py
http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==&mid=402273249&idx=4&sn=aa2e79e154a13c5c94673d9a53e49c96&scene=24&srcid=0323mNu08KMNzbVyn7EbUN1d#rd
2016年3月31日 05:16:39 codegay
0-9组成的字典序第一百万个是多少?
"""
from itertools import permutations

#方法1 使用enumerate()当作计数器,只取第一百万个数字.
result=[''.join([str(r) for r in v]) for k,v in enumerate(permutations(range(10)),1) if k==1000000]
print(result)
#['2783915460']
#[Finished in 0.6s]

#方法2 穷举后排序,取出一百万个数字.
result=[''.join([str(r) for r in v]) for k,v in enumerate(permutations(range(10)),1)]
result.sort()
print(result[1000001])
#2783915640
#[Finished in 14.2s]

转载于:https://www.cnblogs.com/gayhub/p/5339762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值