| 查看: 1755 | 回复: 19 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
holmescn金虫 (正式写手)
|
[交流]
Euler 工程 第廿四题:全排列的第100万项已有5人参与
|
||
|
一个排列是一组对象的一个有序排列。比如3123是数字1、2、3和4的一个可能的排列。如果把所有的排列按照其数字or字母的大小顺序都列出来,那就成为一个全排列。比如0、1、2的全排列是: 012 021 102 120 201 210 那么,数字0、1、2、3、4、5、6、7、8和9的全排列的第100万项是多少? |
» 猜你喜欢
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
论文投稿,期刊推荐
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
孩子确诊有中度注意力缺陷
已经有14人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Project Euler 50 欧拉工程 50 题
已经有12人回复
Project Euler 48 欧拉工程 48 题
已经有30人回复
Project Euler 45 欧拉工程 45 题
已经有7人回复
Euler 工程 第四十一题
已经有5人回复
Euler 工程 第廿九题:有多少不同的项?
已经有30人回复
Euler 工程 第廿六题:最长的循环节
已经有9人回复
Euler 工程第十六题:2的1000次方的各项和
已经有14人回复
Euler 工程 第十五题:从左上角到右下角有多少条路?
已经有5人回复
Euler Project Q13 欧拉工程第十三题
已经有20人回复
Euler Project Q12 欧拉工程第十二题
已经有23人回复
Euler 工程 第十一题:相邻元素乘积最大
已经有10人回复
Euler Project Q7. 欧拉工程第七题
已经有14人回复
Euler 工程 第六题:平方和与和的平方差多少?
已经有5人回复
Euler 工程 第二题:Fibonacci数列中小于4百万的偶数的和
已经有8人回复
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★
微尘、梦想(金币+3): 鼓励交流~~ 2011-06-10 21:53:27
微尘、梦想(金币+3): 鼓励交流~~ 2011-06-10 21:53:27
|
晕,发晚了 楼上怎么没人帖答案和时间了? 我的想法是利用阶乘直接算。因为一个全排列,其实就是每个元素都要在一个位置上出现一次。这样一共有n!个排列(这个地球人都知道)。 这样,如果某一位确定了的话,那么其余的位再用其余的数全排列就行了。(这话怎么这么绕口) 已经知道10!=3628800,9!=362880,这样1000000 - 2*9! = 274240, 也就是说第一位取0,1都不够数,取2,而后面的没的完成全排列就够100万了。OK,第一位是2了。 下面列表: 8! = 40320 274240 - 6 * 8! = 32320 第2位:7 7! = 5040 32320 - 6 * 7! = 2080 第3位:8 6! = 720 2080 - 2 * 6! = 640 第4位:3 5! = 120 640 - 5 * 5! = 40 第5位:9 4! = 24 40 - 1 * 4! = 16 第6位:1 3! = 6 16 - 2 * 3! = 4 第7位:5 2! = 2 4 - 2 * 2! = 0 最后剩:0 4 6 这三个数了. 而最后一个余0了。也就是第2个排列正好就够第100万个了.这样结果就是:2783915460 不知道结果是不是对。这个用时当然很少的了。 |
8楼2011-06-10 17:09:02

2楼2011-06-10 11:45:00
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+3): 谢谢分享~~ 2011-06-10 21:51:54
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+3): 谢谢分享~~ 2011-06-10 21:51:54
|
非蛮力版也有,不过不是自己想出来的,就不好意思直接贴代码了,基本想法就是数制的扩展: 二进制数制是这个样子: a1*2^n+a2*2^(n-1)+...+an*2^1+a*2^0 十进制数制是这样子: b1*10^n+b2*10^(n-1)+...+bn*10^1+b*10^0 那我们可以考虑阶乘进制: c1*n!+c2*(n-1)!+...+cn*1!+c*0! 不过阶乘有点问题就是1!是1,0!是0,那就失去了最后一个的意义,所以最后一个去掉: c1*n!+c2*(n-1)!+...+cn*1!+c 那前面的6个数就依次是: 0=0*2!+0*1!+0 => 012 1=0*2!+1*1!+0 => 021 2=1*2!+0*1!+0 => 102 3=1*2!+1*1!+0 => 120 4=2*2!+0*1!+0 => 201 5=2*2!+1*1!+0 => 210 上面的计算当然跟一般的进制计算不同,一般的进制计算是要求前面的数不能大过模数,二进制的前缀只能是0和1,十进制的前缀只能是0~9,而阶乘进制的前缀就只能是0~n,n是指后面的n!,以3=>120为例,前面的运算应该是这样子: 2!:012,前缀就是take out的索引,例子的是1 1!:02,例子中的是1,拿走的就是2 0!:0,剩下来的没得选择,这也是每个末尾都是0的原因 组合起来就是120 |

3楼2011-06-10 12:04:56
wangww2011
木虫 (著名写手)
- 程序强帖: 13
- 应助: 11 (小学生)
- 金币: 4023.1
- 散金: 2709
- 红花: 18
- 沙发: 1
- 帖子: 1915
- 在线: 1537.1小时
- 虫号: 772953
- 注册: 2009-05-17
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
4楼2011-06-10 13:24:31













回复此楼