蓝桥杯-2017模拟赛本科试题-排列序数-java

蓝桥杯-2017模拟赛本科试题-排列序数-java

借鉴此博客所写哦 2017蓝桥杯模拟赛 Problem C: 排列序数(21分)

题目

X星系的某次考古活动发现了史前智能痕迹。
这是一些用来计数的符号,经过分析它的计数规律如下:
(为了表示方便,我们把这些奇怪的符号用a~q代替)

abcdefghijklmnopq 表示0
abcdefghijklmnoqp 表示1
abcdefghijklmnpoq 表示2
abcdefghijklmnpqo 表示3
abcdefghijklmnqop 表示4
abcdefghijklmnqpo 表示5
abcdefghijklmonpq 表示6
abcdefghijklmonqp 表示7
…..

在一处石头上刻的符号是:
bckfqlajhemgiodnp

请你计算出它表示的数字是多少?

请提交该整数,不要填写任何多余的内容,比如说明或注释。

思考

根据题意,可知题目计算的为全排列的次数
然后找规律
0123 0 0*3! + 0*2! + 0*1! = 0
0132 1 0*3! + 0*2! + 1*1! = 1
0213 2 0*3! + 1*2! + 0*1! = 2
0231 3 0*3! + 1*2! + 1*1! = 3
0312 4 0*3! + 2*2! + 0*1! = 4
0321 5 0*3! + 2*2! + 1*1! = 5
1023 6 1*3! + 0*2! + 0*1! = 6
1032 7 1*3! + 0*2! + 1*1! = 7
1203 8 1*3! + 1*2! + 0*1! = 8
1230 9 1*3! + 1*2! + 1*1! = 9
1302 10 1*3! + 2*2! + 0*1! = 10
1320 11 1*3! + 2*2! + 1*1! = 11
2013 12 2*3! + 0*2! + 0*1! = 12
2031 13 2*3! + 0*2! + 1*1! = 13
2103 14 2*3! + 1*2! + 0*1! = 14
2130 15 2*3! + 1*2! + 1*1! = 15
2301 16 2*3! + 2*2! + 0*1! = 16
2310 17 2*3! + 2*2! + 1*1! = 17
3012 18 3*3! + 0*2! + 0*1! = 18
3021 19 3*3! + 0*2! + 1*1! = 19
3102 20 3*3! + 1*2! + 0*1! = 20
3120 21 3*3! + 1*2! + 1*1! = 21
3201 22 3*3! + 2*2! + 0*1! = 22
3210 23 3*3! + 2*2! + 1*1! = 23

代码

public class Main{
    public static void main(String[] args) {
        String str = "bckfqlajhemgiodnp" ;
        long fs[] = new long[17] ;
        fs[0] = 1;
        for(int i = 1 ; i < 17 ; i++){//1~16的阶乘
            fs[i] = fs[i-1] * i ;
        }
        long sum = 0;
        for(int i = 0 ; i < 16 ; i++){
            char tempCh = str.charAt(i);
            int k = 0 ;
            for(int j = i + 1 ; j < 17 ; j ++){
                if(tempCh-'a' > str.charAt(j)-'a'){
                    k ++ ;
                }
            }
            sum += k * fs[16 - i] ;
        }
        System.out.println(sum);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值