2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】

最近回顾了Java B组的试题,深有感触:脑子长时间不用会锈住,很可怕。
兄弟们,都给我从被窝里爬起来,赶紧开始卷!!!

2022年第十三届蓝桥杯Java B组(第一部分 A~F题)

目录

一、填空题

试题 A: 星期计算

思路与题解:

试题 B: 山

思路与题解:

二、编程题

试题 C: 字符统计

思路与题解:

试题 D: 最少刷题数

思路与题解:

试题 E: 求阶乘

 思路与题解:

试题 F: 最大子矩阵

 思路与题解: 


一、填空题

试题 A: 星期计算

本题总分:5 分
【问题描述】
已知今天是星期六,请问  20^{22}天后是星期几?注意用数字 1 到 7 表示星期一到星期日。

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

思路与题解:

    A题显然是个签到题,很多人第一思路就是“取余”,思路没错,但是如果直接暴力取余,那你就格局小了,哥们!
      因为20的22次幂(大于2^88)明显不在long类型的范围内【(2^63)-1】,那么就要分步骤做取余运算:
      根据公式: (a * b) % p = (a % p * b % p) % p 
      20^22相当于22个20做了21次乘法运算,所以我的思路是把每一次乘法的结果取余,这样,别说是long可以装得下,就算是int也手拿把掐了!

	public static void Java_B_A(){int n = 20;for(int i=0;i<21;i++)n = (20*n)%7;System.out.println((n+5)%7+1);	}

最终结果:7 ,即星期日。
   

试题 B:

本题总分:5 分
【问题描述】
这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,比如 123565321、145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。
小明数了很久也没有数完,他想让你告诉他在区间 [2022, 2022222022] 中有多少个数的形状像一座“山”。

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

思路与题解:

    直接暴力遍历,并判断条件,时间有点长但好用。

	public static void Java_B_B(){int sum = 0;for(int i=2022;i<=2022222022;i++) {if(isUp(i)&&isMirror(i)) {sum++;}}System.out.println(sum);}public static boolean isMirror(int num){StringBuffer str = new StringBuffer(num+"");if((str.toString()).equals(str.reverse().toString()))return true;return false;}public static boolean isUp(int num){String st=num+"";int len=st.length()%2==0?st.length()/2:st.length()/2+1;for(int i=1;i<len;i++) {if(st.charAt(i)<st.charAt(i-1)) {return false;}}return true;}

最终结果:3138 。
   

二、编程题

试题 C: 字符统计

时间限制: 1.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
  给定一个只包含大写字母的字符串 S ,请你输出其中出现次数最多的字母。如果有多个字   母均出现了最多次,按字母表顺序依次输出所有这些字母。

【输入格式】
 一个只包含大写字母的字符串 S .

【输出格式】
 若干个大写字母,代表答案。

【样例输入】
 BABBACAC

【样例输出】
 AB

【评测用例规模与约定】
 对于 100% 的评测用例,1 ≤ |S | ≤ 10^{6}.

思路与题解:

    本题运用Java的集合框架很容易解决。首先遍历字符串,把其中的每一种字母以键值对<字母种类,出现次数>的形式保存到HashMap中,然后遍历map提取出出现次数最多的n个字母,把它们存到list列表中,利用Collections工具类把list中字母排序,最后输出打印。

	public static void Java_B_C(){Scanner scanner = new Scanner(System.in);String input = scanner.next();HashMap<Character, Integer> mp = new HashMap();for(int i=0;i<input.length();i++){char ch = input.charAt(i);if (mp.get(ch) != null)mp.put(ch, (mp.getOrDefault(ch, 0)) + 1);elsemp.put(ch, 1);}int maxNum = Integer.MIN_VALUE;List<Character> list = new ArrayList<Character>();for(Character c:mp.keySet()){if(mp.get(c)>=maxNum){maxNum = mp.get(c);list.add(c);}}Collections.sort(list);for(Character ch:list){System.out.print(ch);}}

试题 D: 最少刷题数

时间限制: 1.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
 小蓝老师教的编程课有 N 名学生,编号依次是 1 . . . N。第 i 号学生这学期刷题的数量是   A_{i}
 对于每一名学生,请你计算他至少还要再刷多少道题,才能使得全班刷题比他多的学生数不   超过刷题比他少的学生数。

【输入格式】
 第一行包含一个正整数 N。
 第二行包含 N 个整数:A_{1},A_{2},A_{3} ,. . . , A_{N}.

【输出格式】
 输出 N 个整数,依次表示第 1 . . . N 号学生分别至少还要再刷多少道题。

【样例输入】
  5
 12 10 15 20 6

【样例输出】
 0 3 0 0 7

【评测用例规模与约定】
 对于 30% 的数据,1 ≤ N ≤ 1000, 0 ≤ A_{i} ≤ 1000.
 对于 100% 的数据,1 ≤ N ≤ 100000, 0 ≤ A_{i} ≤ 100000.

思路与题解:

    输入的刷题数进行排序;
    分情况考虑:奇数情况下,超过中间值才能满足全班刷题比他多的学生数不超过刷题比他少的学生数;偶数情况下需要等于中间偏大的值就可以满足条件。

	public static void Java_B_D() {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] nums = new int[n];int[] count = new int[n];for (int i = 0; i < nums.length; i++) {// 输入的一个数组,并把这个数组复制下来nums[i] = scan.nextInt();count[i] = nums[i];}// 个数组排一下序方便找到较中间的那个数Arrays.sort(count);// 找到中间的索引int index = 0;// 分情况讨论值if (n % 2 == 0) {index = n / 2 + 1;} else {index = n / 2;}// 找到中间值int middle = count[index];for (int i = 0; i < n; i++) {// 判断得到最终结果if (nums[i] < middle) {System.out.print(middle - nums[i] + 1);System.out.print(" ");} else {System.out.print(0);System.out.print(" ");}}}

试题 E: 求阶乘

时间限制: 1.0s 内存限制: 512.0MB
本题总分:15 分
【问题描述】
满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少?
如果这样的 N 不存在输出 −1。
【输入格式】
 一个整数 K。
【输出格式】
 一个整数代表答案。
【样例输入】
 2
【样例输出】
 10
【评测用例规模与约定】
 对于 30% 的数据,1 ≤ K ≤ 10^{6}.
 对于 100% 的数据,1 ≤ K ≤ 10^{18}.
 

 思路与题解:

    本题要解决两个问题,1.整型数长度越界 2.直接遍历搜索的时间复杂度很大,不可能实现 
    所以要对判断条件作预处理,避免以上两个问题:
         如果末尾存在'0'就是要凑10,而只有2和5两个因数才能得到10,又因为阶乘中2的个数远远大于5,所以要凑5,
         注意对于25,125等数字其中包含不止一个5,所以不能直接输出5K,当k为5时,25的阶乘末尾有6个0,暴力求解: 后面以0结尾的一定是5!....(5的倍数的阶乘) 所以只需要判断5的倍数的阶乘 (判断的数)/5 就是含有5的个数 也是阶乘后0的个数。分析如下:

	public static void Java_B_E() {Scanner sc = new Scanner(System.in);long k = sc.nextLong();long count; // 含有5的个数 也是阶乘后0的个数long a = 5; // 直接从5的阶乘(120)开始判断while (true) {long tempA = a;count = 0;while (tempA > 0) {tempA /= 5;count += tempA;}if (count < k) {a += 5;} else if (count == k) {System.out.println(a);break;} else {System.out.println(-1);break;}}}

试题 F: 最大子矩阵

时间限制 : 1.0s
内存限制 : 512.0MB
本题总分: 15
【问题描述】
小明有一个大小为 N × M 的矩阵,可以理解为一个 N M 列的二维数组。
我们定义一个矩阵 m 的稳定度 f ( m ) f ( m ) = max ( m ) min ( m ) ,其中 max ( m )
表示矩阵 m 中的最大值, min ( m ) 表示矩阵 m 中的最小值。现在小明想要从这
个矩阵中找到一个稳定度不大于 limit 的子矩阵,同时他还希望这个子矩阵的面
积越大越好(面积可以理解为矩阵中元素个数)。
子矩阵定义如下:从原矩阵中选择一组连续的行和一组连续的列,这些行
列交点上的元素组成的矩阵即为一个子矩阵。
【输入格式】
第一行输入两个整数 N M ,表示矩阵的大小。
接下来 N 行,每行输入 M 个整数,表示这个矩阵。
最后一行输入一个整数 limit ,表示限制。
【输出格式】
输出一个整数,分别表示小明选择的子矩阵的最大面积。
【样例输入】
3 4
2 0 7 9
0 6 9 7
8 4 6 4
8
【样例输出】
6
【样例说明】
满足稳定度不大于 8 的且面积最大的子矩阵总共有三个,他们的面积都是
6 (粗体表示子矩阵元素):
2 0 7 9
0 6 9 7
8 4 6 4
2 0 7 9
0 6 9 7
8 4 6 4
2 0 7 9
0 6 9 7
8 4 6 4
【评测用例规模与约定】
        评测用例编号                 N                 M
        1, 2                         1 ≤ N ≤ 10         1 ≤ M 10
        3, 4                         N = 1                 M ≤ 100000
        5 ∼ 12                    1 ≤ N ≤ 10         M 10000
        13 ∼ 20                  1 ≤ N ≤ 80         1 ≤ M 80
对于所有评测用例, 0 矩阵元素值 , limit 10^{5}

 思路与题解: 

        时间有限,直接暴力枚举。

    static int[][] arr;public static void Java_B_F() {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int M = scanner.nextInt();arr = new int[N][M];for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {arr[i][j] = scanner.nextInt();}}int limit = scanner.nextInt();int max_area = Integer.MIN_VALUE;for (int i = N; i > 0; i--) {for (int j = M; j > 0; j--) { // i*j的矩阵for (int x = 0; x <= N - i; x++) {for (int y = 0; y <= M - j; y++) { // 左上角坐标int max = find_max(i, j, x, y);int min = find_min(i, j, x, y);if ((max - min) <= limit) {max_area = Math.max(max_area, i * j);}}}}}System.out.println(max_area);}private static int find_min(int i, int j, int x, int y) {// 寻找最小值int res = Integer.MAX_VALUE;for (int n = x; n < x + i; n++) {for (int m = y; m < y + j; m++) {res = Math.min(res, arr[n][m]);}}return res;}private static int find_max(int i, int j, int x, int y) {// 寻找最大值int res = Integer.MIN_VALUE;for (int n = x; n < x + i; n++) {for (int m = y; m < y + j; m++) {res = Math.max(res, arr[n][m]);}}return res;}

以上是A~F前6道题的真题解析,真题解析及内容排版不容易,如果对各位有帮助的话,那就快赞起来吧,感谢关注、收藏、一键三连!

下一篇文章链接:2022年第十三届蓝桥杯Java B组(第二部分 G~J题)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解基于快速排序算法的qsort的模拟实现

目录 1. 快速排序 1.1 快速排序理论分析 1.2 快速排序的模拟实现 2. qsort的模拟实现 2.1 qsort的理论分析 2.2 qsort的模拟实现 qsort函数是基于快速排序思想设计的可以针对任意数据类型的c语言函数。要对qsort进行模拟实现&#xff0c;首先就要理解快速排序。 1. 快…

【数据结构】堆的创建

文章目录 一、堆的概念及结构1、什么是堆2、堆的性质3、堆的结构及分类 二、堆的创建1、堆向下调整算法2、堆向上调整算法3、堆的创建&#xff08;向上调整算法&#xff09; 一、堆的概念及结构 1、什么是堆 堆就是以二叉树的顺序存储方式来存储元素&#xff0c;同时又要满足父…

智慧城市中的智慧生活:便捷、舒适与高效

目录 一、智慧城市中的智慧生活概述 二、智慧生活带来的便捷性 1、智慧交通的便捷出行 2、智慧购物的轻松体验 3、智慧政务的一站式服务 三、智慧生活带来的舒适性 1、智慧环境的绿色宜居 2、智慧医疗的健康保障 3、智慧教育的均衡发展 四、智慧生活带来的高效性 1、…

CSS案例-5.margin产品模块练习

效果1 相关数据 整体长&#xff1a;298px&#xff0c;高&#xff1a;415px 效果2 知识点 外边距margin 块级盒子水平居中 条件&#xff1a; 必须有宽度左右外边距设为auto 三种写法&#xff1a; margin-left&#xff1a;auto&#xff1b;margin-right&#xff1a;auto&…

高架学习笔记之信息安全基础

目录 一、信息安全基础 1.1. 概念 1.2. 信息存储安全 1.3. 网络安全 二、信息安全系统的组成框架 三、信息加解密技术和数字签名 四、访问控制技术 五、信息安全的保障体系与评估方法 5.1. 计算机信息系统安全保护等级 5.2. 安全风险管理 一、信息安全基础 1.1. 概念 …

linux安装WordPress问题汇总,老是提示无法连接到FTP服务器解决方案

最近在做一些建站相关的事情&#xff0c;遇到一些大大小小的问题都整理在这里 1.数据库密码和端口&#xff0c;千万要复杂一点&#xff0c;不要使用默认的3306端口 2.wordpress算是一个php应用吧&#xff0c;所以安装流程一般是 apache http/nginx——php——mysql——ftp &…

MQTT和Modbus的物联网网关协议区别分析

MQTT和Modbus的物联网网关协议区别分析 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;与Modbus是两种广泛应用在物联网环境中的通信协议&#xff0c;它们各自具有独特的优势和适用场景&#xff0c;下面将从多个维度对这两种网关协议进行详细区别分析。 首…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求&#xff0c;大概情况就是&#xff0c;视频文件是存储在笔记本电脑里面&#xff0c;然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式&#xff0c;后来发现不行&#xff0c;这样太局限了&#xff0c;需要先明确可能用到的教程&#xf…

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年&#xff0c;主要目标是应对车辆的电子和电气&#xff08;E/E&#xff09;系统失效。该方法践行至今&#xff0c;有些系统功能安全方法已经成熟&#xff0c;例如电池管理系统&#xff08;BMS&#xff09;&#xff0c;并且…

Latex插入pdf图片,去除空白部分

目录 参考链接&#xff1a; 流程&#xff1a; 参考链接&#xff1a; ​科研锦囊之Latex-如何插入图片、表格、参考文献 http://t.csdnimg.cn/vpSJ3 流程&#xff1a; Latex的图片插入支持PDF文件&#xff0c;这里笔者建议都使用PDF文件进行图片的插入&#xff0c;因为PDF作…

基于spring boot实现接口管理平台

数据库结构 /* Navicat MySQL Data TransferSource Server : localhost_3306 Source Server Version : 50724 Source Host : localhost:3306 Source Database : interfaceTarget Server Type : MYSQL Target Server Version : 50724 File Encoding…

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

学习笔记Day8:GEO数据挖掘-基因表达芯片

GEO数据挖掘 数据库&#xff1a;GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型&#xff1a;基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因&#xff0c;一列为一个样本&#xff0c;内容是基因表达量。 热图 输入数据…

Java语言: JVM

1.1 内存管理 1.1.1 JVM内存区域 编号 名字 功能 备注 1 堆 主要用于存放新创建的对象 (所有对象都在这里分配内存) jdk1.8之后永久代被替换成为了元空间&#xff08;Metaspace&#xff09; 2 方法区(加、常、静、即) 被虚拟机加载的类信息(版本、字段、方法、接口…

Git——GitHub远端协作详解

目录 Git&GitHub1、将内容Push到GitHub上1.1、在GitHub上创建新项目1.2、upstream1.3、如果不想要相同的分支名称 2、Pull下载更新2.1、Fetch指令2.2、Fetch原理2.3、Pull指令2.4、PullRebase 3、为什么有时候推不上去3.1、问题复现3.2、解决方案一&#xff1a;先拉再推3.3…

孙溟㠭于北京大学北大书店现场创作

孙溟㠭于北京大学北大书店现场创作篆刻作品 孙溟㠭北大书店现场创作 孙溟㠭于北京大学北大书店展览期间现场创作 孙溟㠭北京大学篆刻展现场创作 图文/氿波

Nadaraya-Watson核回归

目录 基本原理 ​编辑 核函数的选择 带宽的选择 特点 应用 与注意力机制的关系 参考内容 在统计学中&#xff0c;核回归是一种估计随机变量的条件期望的非参数技术。目标是找到一对随机变量 X 和 Y 之间的非线性关系。 在任何非参数回归中&#xff0c;变量 Y 相对于变量…

【c++】c++基本语法知识-命名空间-输入输出-缺省参数

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.命名空间 1.2 命名空间定义 1.3 命名空间使用 命名空间的三种使用方式 2.C输入&输出 std命名空间的使用惯例 3.缺省参数 3…

linux scp 免密传输配置 案例

目录 说明准备实现结果步骤生成RSA公钥和私钥查看密钥生成结果将公钥传输到目标服务器 额外内容自动备份文件脚本定时删除备份文件 说明 日常工作中常常会使用到ssh 的scp命令进行文件传输。有时候甚至使用自定义的脚本配合定时任务来对文件进行异地备份&#xff0c;那么此时就…

【Qt】常用控件(按钮/单选按钮/复选按钮/QLabel)

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、按钮类控件 1、QPushButton(按钮) 1.1pushButtn中插入图片(void setIcon(const QIcon &icon);) 1.2给按钮插…