按6个算法求839647521后的第999个排列
来源:互联网 发布:汽车保险软件 编辑:程序博客网 时间:2024/06/04 17:59
按6个算法求839647521后的第999个排列
一.字典法
原理:将原排列数字从左到右,依次查看数字右侧比其小的数字有几个。
原数字 :839647521
原递增中介数:
8右侧比8小的有7个数字(3647521)
3右侧比3小的有2个数字(21)
9右侧比9小的有6个数字(647521)
6右侧比6小的有4个数字(4521)
4右侧比4小的有2个数字(21)
7右侧比7小的有3个数字(521)
5右侧比5小的有2个数字(21)
2右侧比2小的有1个数字(1)
所以,原中介数=72642321
原序号 :7*8!+2*7!+6*6!+4*5!+2*4!+3*3!+2*2!+1*1!=297191
新序号 :297191+999=298190
新递增中介数:
(法1)因为比序号999小的最大阶乘是6!(6!=720 7!=5040),直到余数为 0
999 /6!=1余279
279 /5!=2余39
39 /4!=1余15
15 /3!=2余3
3 /2!=1余1
1 /1!=1余0
因此序号999的"递增进位制数"就是121211
所以:新递增中介数=原中介数+999的递增进位制数
=72642321+121211
765432
=73104210
(法2)因为比新序号298190小的最大阶乘是8!(8!=40320 9!=362880)