189 8069 5689

2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现)-创新互联

2023第十四届蓝桥杯模拟赛第二期(Java组)
  • 填空题
    • 问题1:大于 2022 的最小数
    • 问题2:时间间隔
    • 问题3:进制转换
    • 问题4:最长路径
    • 问题5:2022最多能拆分为多少个质数之和
  • 大题:
    • 问题6:拷贝文件
    • 问题7:去除重复单词
    • 问题8:补充回文串
    • 问题9:X图形个数

创新互联公司成都网站建设定制网站设计,是成都网站营销公司,为建筑动画提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站设计热线:13518219792填空题 问题1:大于 2022 的最小数

请找到一个大于 2022 的最小数,这个数转换成二进制之后,最低的 6 个二进制为全为 0 。请将这个数的十进制形式作为答案提交。

public static void main(String[] args) {int flag=0;
        for(int i=2023;;i++){String str=Integer.toBinaryString(i);   //转换为二进制
            if(str.length()>=6) {//二进制长度大于6才继续
                String substr = str.substring(str.length() - 6);    //取出最后6 个二进制位
                if(substr.equals("000000")) {System.out.println(i);
                    break;
                }
            }
        }
    }

结果:

2048
问题2:时间间隔

计算1949年10月1日至2022年1月1日间隔的天数

直接用电脑自带计算器:

在这里插入图片描述

问题3:进制转换

8518 是一个非常特殊的数,如果把这个数看成 16 进制数,它的值为 (8518)16=8161616+51616+116+8=34072,而 34072 正好是 8518 的整数倍。9558 也是这样一个数,当看成 16 进制时是 38232。其实长度为 1 的数 0 到 9 都满足看成 16 进制后是自己的整数倍(1倍)。请问,除开长度为 1 的数,最小的满足这样条件的数是多少?

public static void main(String[] args) {for(int i=10;;i++){int num=Integer.valueOf(Integer.toString(i),16);//将数值看作16进制数,将其转为10进制
            if(num%i==0) {System.out.println(i);
                break;
            }
        }
    }

结果:

1038
问题4:最长路径

从矩阵第一行第一列出发,只能水平往右走或者竖直往下走,求所走折线的数字之和的大值。

问题5:2022最多能拆分为多少个质数之和

2022能拆分为多个质数之和,请问最多能拆分为多少个?

public class h5 {// 判断数字是否为质数
    public static boolean iszhishu(int n){for(int i=2;iif(n%i==0)
                return false;
        }
        return true;
    }
    public static void main(String[] args) {int sum=2;      //记录质数之和
        int count=1;    //记录质数的个数
        for(int i=3;i<2022;i++){if(iszhishu(i)) {sum += i;
                count++;
            }
            if(sum>=2022) { //看>=2022最近的数是哪个
                System.out.println("质数之和:"+sum);
                System.out.println("当前数字:"+i);
                System.out.println("质数个数:"+count);
                break;
            }
        }
    }
}

结果:

质数之和:2127
当前数字:139
质数个数:34

和为2127时质数个数为34,所以仅需剔除5这个质数,就可以得到2022,因此答案为34-1=33个。

大题: 问题6:拷贝文件

小蓝正在拷贝一份文件,他现在已经拷贝了 t 秒时间,已经拷贝了 c 字节,文件总共有 s 字节, 如果拷贝是匀速进行的,请问小蓝大概还需要拷贝多少秒?

  • 输入格式
  • 输入一行包含三个整数 t, c, s,相邻两个整数之间用一个空格分隔。
  • 输出格式
  • 输出一个整数,表示答案。数据保证答案正好是整数。
  • 样例输入
3 10 20
  • 样例输出
3
  • 样例输入
30 14 21
  • 样例输出
15
public class h6 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();     //已经拷贝了 t 秒时间
        int c=sc.nextInt();     //已经拷贝了 c 字节
        int s=sc.nextInt();     //文件总共有 s 字节
        double speed=c/(double)t;   //计算拷贝速度,记得转换为double
        int ans=(int)Math.round((s-c)/speed);   //结果四舍五入
        System.out.println(ans);
    }
}

结果:

3 10 20
3
30 14 21
15
30 14 22
17
问题7:去除重复单词

小蓝有 n 个单词,但是单词中有一些是重复的,请帮小蓝去除重复的单词。

  • 输入格式
  • 输入第一行包含一个正整数 n ,表示小蓝的单词数量。接下来 n 行,每行包含一个由小写字母组成的单词。
  • 输出格式
  • 请输出去除重复后的那些单词。如果一个单词出现了多遍,请保留第一次出现的单词,去除之后出现的单词,按输入的顺序输出。
  • 样例输入
5
 lanqiao
 hi
 hello
 hello
 lanqiao
  • 样例输出
lanqiao
 hi
 hello
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Scanner;
public class h7 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String[] s=new String[n];
        for(int i=0;ilist1=new ArrayList<>(Arrays.asList(s));
        LinkedHashSethashSet=new LinkedHashSet<>(list1);   //集合自动去重
        ArrayListlist2=new ArrayList<>(hashSet);
        for(String str:list2)
            System.out.println(str);
    }
}

结果:

8
lanqiao
lanqiao
hi
lanqiao
hello
hello
hello
hi


lanqiao
hi
hello
问题8:补充回文串

一个字符串如果从左向右读和从右向左读相同,则称为一个回文串,例如 lanqiaoaiqnal 是一个回文串。小蓝有一个字符串,请将这个字符串右边加上一些字符,使其成为一个回文串。如果有多种方案,请输出最短的回文串。

  • 输入格式
  • 输入一行包含一个字符串,由小写英文字母组成。
  • 输出格式
  • 输出一行包含答案。
  • 样例输入
lanqiao`
  • 样例输出
lanqiaoaiqnal`
  • 样例输入
banana`
  • 样例输出
bananab
  • 样例输入
noon
  • 样例输出
noon
public class h8 {//判断是否是回文串
    public static boolean ishuiwen(String s){int n=s.length();
        int l=0,r=n-1;
        while(lif(s.charAt(l)==s.charAt(r)){l++;
                r--;
            }
            else
                return false;
        }
        return true;
    }
    public static void main(String[] args) {Scanner sc = new Scanner(System.in);
        String s = sc.next();
        StringBuilder sb = new StringBuilder(s);
        if (ishuiwen(s))
            System.out.println(s);
        else {int l = 0, r = s.length() - 1;  //左右双指针
            while (l< r) {if (sb.charAt(l) != sb.charAt(r)) {sb.insert(r + 1, sb.charAt(l)); //左右指针字符不对应,就插入
                } else
                    r--;
                l++;
            }
            System.out.println(sb.toString());
        }
    }
}

结果

banana
bananab
lanqiao
lanqiaoaiqnal
noon
noon
问题9:X图形个数

给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个45度斜线方向引出的直线段组成,四条线段的长度相同,而且四条线段上的字母和中心点的字母相同。一个 X图形可以使用三个整数 r, c, L 来描述,其中 r, c 表示中心点位于第 r 行第 c 列,正整数 L 表示引出的直线段的长度。 对于 1 到 L 之间的每个整数 i,X图形满足:第 r-i 行第 c-i 列与第 r 行第 c 列相同,第 r-i 行第 c+i 列与第 r 行第 c 列相同,第 r+i 行第 c-i 列与第 r 行第 c 列相同,第 r+i 行第 c+i 列与第 r 行第 c 列相同。例如,对于下面的字母矩阵中,所有的字母 L 组成一个 X图形,其中中间的 5 个 L 也组成一个 X图形。所有字母 Q 组成了一个 X图形。
LAAALA
ALQLQA
AALQAA
ALQLQA
LAAALA
给定一个字母矩阵,请求其中有多少个 X图形。

  • 输入格式
  • 输入第一行包含两个整数 n, m,分别表示字母矩阵的行数和列数。接下来 n 行,每行 m 个大写字母,为给定的矩阵。
  • 输出格式
  • 输出一行,包含一个整数,表示答案。
  • 样例输入
5 6
  LAAALA
  ALQLQA
  AALQAA
  ALQLQA
  LAAALA
  • 样例输出
3
public class h9 {//public static void show(char[][] a){//    int n=a.length;
    //    for(int i=0;i
    //        for(int j=0;j
    //            System.out.print(a[i][j]+" ");
    //        System.out.println();
    //    }
    //}
    public static void main(String[] args) {Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        String[] s=new String[n];
        char[][] ch=new char[n][m];
        for(int i=0;ifor(int j=0;jfor(int j=1;jint zs=0,zx=0,ys=0,yx=0;    //记录每个字母左上左下右上右下分别有多少个和中心字母相同
                // 左上角
                for(int k=1;k<=Math.min(i,j);k++) {if (ch[i][j] != ch[i - k][j - k])
                        break;
                    zs++;
                }
                // 左下角
                for(int k=1;k<=Math.min(n-i-1,j);k++) {if (ch[i][j] != ch[i+k][j-k])
                        break;
                    zx++;
                }
                // 右上角
                for(int k=1;k<=Math.min(i,m-j-1);k++) {if (ch[i][j] != ch[i-k][j+k])
                        break ;
                    ys++;
                }
                // 右下角
                for(int k=1;k<=Math.min(n-i-1,m-j-1);k++) {if (ch[i][j] != ch[i+k][j+k])
                        break;
                    yx++;
                }
                int min=(min=(min=(zs
5 6
LAAALA
ALQLQA
AALQAA
ALQLQA
LAAALA

3
5 11
AAAAALQAALQ
AAAAAALQLQA
AAAAAAALQAA
AAAAAALQLQA
AAAAALQAALQ

15

自己做的,菜鸟一枚,可能有不少错漏之处,请大家指正。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现)-创新互联
当前网址:http://cdxtjz.cn/article/dgpogj.html