2023蓝桥杯JavaB部分题解

试题 A: 阶乘求和

【问题描述】 令 S = 1! + 2! + 3! + ... + 202320232023!,求 S 的末尾 9 位数字。 提示:答案首位不为 0。

【思路】暴力实现

        long a = 1;
        long b= 202320232023L;
        BigInteger sum = new BigInteger(String.valueOf(0));
        BigInteger zhongjian=new BigInteger(String.valueOf(1));
        for(;a<=b;a++){
            zhongjian = zhongjian.multiply(BigInteger.valueOf(a));
            sum = sum.add(zhongjian);
        }
        BigInteger end =sum.remainder(BigInteger.valueOf(1000000000));
        System.out.println(end);

但是跑的时间会很长。最后得出一个结果420940313。网上有一篇题解上写的解法我没看懂,会的小伙伴可以留言。链接 2023年第十四届蓝桥杯JAVAB组题解 - 知乎 (zhihu.com)2023蓝桥杯JavaB部分题解_第1张图片

 试题 B: 幸运数字

【问题描述】 哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整 数。例如 126 是十进制下的一个哈沙德数,因为 (126)10 mod (1+2+6) = 0;126 也是八进制下的哈沙德数,因为 (126)10 = (176)8,(126)10 mod (1 + 7 + 6) = 0; 同时 126 也是 16 进制下的哈沙德数,因为 (126)10 = (7e)16,(126)10 mod (7 + e) = 0。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为 哈沙德数,那么这个数字就是幸运数字,第 1 至第 10 个幸运数字的十进制表示 为:1 , 2 , 4 , 6 , 8 , 40 , 48 , 72 , 120 , 126 . . . 。现在他想知道第 2023 个幸运数 字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

【普及】

列举几个进制转换的方法

int n = 10;
// 十进制转二进制
String s = Integer.toBinaryString(n);
// 十进制转八进制
String s1 = Integer.toOctalString(n);
// 十进制转十六进制
String s2 = Integer.toHexString(n); 

 【答案】

    public static void main(String[] args) {
        int num = 10;
        int i =127;
        while(true){
            //转二进制
            String s = Integer.toBinaryString(i);
            //转八进制
            String s1 = Integer.toOctalString(i);
            //转十进制
            String s2 = String.valueOf(i);
            //转十六进制
            String s3 = Integer.toHexString(i);
            if(zhengchu(i,s,2)&&zhengchu(i,s1,8)&&zhengchu(i,s2,10)&&zhengchu(i,s3,16)){
                num++;
            }
            if(num==2023){
                System.out.println(i);
                return;
            }
            i++;
        }
    }
    public static boolean zhengchu(int i,String s,int base){
        char c[]=s.toCharArray();
        int sum = 0;
        for(int j=0; j

一个特别重要的方法

Character.digit(char,base) //可以将字符类型的数据转换成任意进制

 。。。先更新到这里

你可能感兴趣的:(java,蓝桥杯,职场和发展)