用fortran写了一段代码,有注释,供您参考。
符合条件的一共有40320个。
算法本身是按照递增序生成的,所以不用排序。生成数组的时间小于0.5秒。
第300个排列值是,12564873。
以下是代码和输出的附图。
1.A(8,8)=40320
2.299/7!=0余299,故首位为1,剩[2,3,4,5,6,7,8]
299/6!=0余299,故第二位为2,剩[3,4,5,6,7,8]
299/5!=2余59,故第三位为5,剩[3,4,6,7,8]
59/4!=2余11,故第四位为6,剩[3,4,7,8]
11/3!=1余5,故第五位为4,剩[3,7,8]
5/2!=2余1,故第六位为8,剩[3,7]
1/1!=1余0,故第七位为7,剩3,自动成为第八位
因此第300个全排列为12564873。
刚刚5!算错了,已更正
只有八个可用数字,相当于八进制。