康托展开:
1.定义:给一个n个不同数字的排列,求所有排列中比该排列要小的个数X
2.式子:$X=a_n*(n-1)!+a_{n-1}*(n-2)!+……+a_1*0!$,其中$a_i$表示第1位到第i-1位上的数字中,比第i位(从右往左数)数字的个数小的数量。
3.例子:如 {1、2、3、4}的一个排列 {2、1、4、3}:
X=1*3!+0*2!+1*1!+0*1!= 7。
逆康托展开
1.猜想:既然我们可以通过1-n的一个排列S,求出X(S),那么是否给定一个X(S)可以求出S呢?
2.结论:可以。
对于给定的X(S)我们第一次对(n-1)!取商和余,商即为$a_n$;
第二次对让第一次的余(n-2)!取商和和余,商即为$a_{n-1}$;
……
求出$a$以后,我们对$a$进行反解,即X(S)
3.例子:X(S)=7
X=1*3!+0*2!+1*1!+0*0!
所以$a$={1、0、1、0},那么$s_4=2$,$s_3=1$,$s_2=4$,$s_1=3$。
反解成功。