蓝桥杯2021国赛javaB组题目详解


蓝桥杯2021国赛javaB组题目详解


第一题 整数范围

问题描述

用 8位二进制(一个字节)来表示一个非负整数,表示的最小值是 0,则一般能表示的最大值是多少?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code

public class 蓝桥杯2021整数范围 {
    public static void main(String[] args) {
        System.out.println(255);
    }
}

第二题 纯质数

问题描述

如果一个正整数只有1和它本身两个约数,则称为一个质数(又称素数)。前几个质数是:2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,…
如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3, 5, 7, 23, 37都是纯质数,而11, 13, 17, 19, 29, 31不是纯质数。当然1, 4, 35也不是纯质数。
请问,在1到20210605中,有多少个纯质数?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code

import java.util.ArrayList;

public class 蓝桥杯2021纯质数 {
    public static void main(String[] args) {
        int N =20210605;
        int count=0;
        ArrayList<Integer> mylist = new ArrayList<>();
        mylist.add(2);
        mylist.add(3);
        for(int i=2;i<=N;i++){
            for(int j=2;j*j<=i;j++){
                if(i%j==0){
                    break;
                }
                if((j+1)*(j+1)>i){
                    mylist.add(i);
                }
            }
        }
        char[] test = {'2','3','5','7'};
        for(Integer s : mylist ){
            int flag=1;
            String str = String.valueOf(s);
            for(char ch :str.toCharArray()){
                for(char cht:test){
                    if(cht-ch==0){
                        break;
                    }
                    if(cht-'7'==0&&ch-'7'!=0){
                        flag=0;
                        break;
                    }
                }
                if(flag==0){
                    break;
                }
            }
            if(flag==1){
                count++;
            }
        }
        System.out.println(count);
    }
}

第三题 完全日期

问题描述

如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。例如: 2021 年 6 月 5 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 5 = 16,而16 是一个完全平方数,它是 4 的平方。所以 2021 年 6 月 5 日是一个完全日期。例如: 2021 年 6 月 23 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 2 + 3 = 16,是一个完全平方数。所以 2021 年 6 月 23 日也是一个完全日期。
请问,从 2001 年 1 月 1 日到 2021 年 12 月 31 日中,一共有多少个完全日期?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code

import java.time.LocalDate;

public class 蓝桥杯2021完全日期 {
    public static void main(String[] args) {
        LocalDate t1 =LocalDate.of(2001, 1, 1);
        LocalDate t2 =LocalDate.of(2021, 12,31);
        int count=0;
        while(t1.isBefore(t2)||t1.isEqual(t2)){
            int a = t1.getYear();
            int b = t1.getMonthValue();
            int c = t1.getDayOfMonth();
            int d1=0;
            String a1 =String.valueOf(a);
            String b1 =String.valueOf(b);
            String c1 =String.valueOf(c);
            for(char i:a1.toCharArray()){
                d1+=Character.getNumericValue(i);
            }
            for(char i:b1.toCharArray()){
                d1+=Character.getNumericValue(i);
            }
            for(char i:c1.toCharArray()){
                d1+=Character.getNumericValue(i);
            }
            int d2 = (int)Math.sqrt(d1);
            if(d1==(d2*d2)){
                count++;
            }
            t1=t1.plusDays(1);
        }
        System.out.println(count);
    }
}

第四题 最小权值

问题描述

对于一棵有根二叉树T,小蓝定义这棵树中结点的权值W(T)如下:空子树的权值为0。
如果一个结点v有左子树L,右子树R,分别有C(L)和C(R)个结点,则:
W(v) = 1 + 2W(L) + 3W(R) +(C(L))2C(R)。
树的权值定义为树的根结点的权值。
小蓝想知道,对于一棵有2021个结点的二叉树,树的权值最小可能是多少?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code

//dp
public class 蓝桥杯2021最小权值 {
    static int N=2021;
    static long[] map = new long[N+1];
    public static void main(String[] args) {
        System.out.println(dfs(N));
    }
    public static long dfs(int num) {
        if(num==0||map[num]!=0){
            return map[num];
        }
        long weight =Long.MAX_VALUE;
        for(int lnum=0;lnum<num;lnum++){
            int rnum=num-1-lnum;
            long midWeight = 1+2*dfs(lnum)+3*dfs(rnum)+lnum*lnum*rnum;
            weight = Math.min(weight, midWeight);
        }
        map[num]=weight;
        return map[num];        
    }
}

第五题 大写

问题描述

给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。

输入格式

输入一行包含一个字符串

输出格式

输出转换成大写后的字符串。

样例输入

LanQiao

样例输出

LANQIAO

评测用例规模与约定

对于所有评测用例,字符串的长度不超过100。

code

import java.util.Scanner;

public class 蓝桥杯2021大写 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println(sc.next().toUpperCase());
        sc.close();
    }
}

文章作者: Lao Wu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lao Wu !
评论
  目录