【备战蓝桥杯 | 软件Java大学B组】十三届真题深刨详解(1)

简介: 【备战蓝桥杯 | 软件Java大学B组】十三届真题深刨详解(1)

第十三届蓝桥杯大赛软件赛省赛 Java 大学 B 组

试题包含“结果填空”和“程序设计”两种题型。

结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要

求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。

程序设计题:要求选手设计的程序对于给定的输入能给出正确的输出结果。

考生的程序只有能运行出正确结果才有机会得分

  • 注意:不要使用 package 语句。
  • 注意:选手代码的主类名必须为:Main,否则会被判为无效代码。
  • 注意:如果程序中引用了类库,在提交时必须将 import 语句与程序的其
    他部分同时提交。只允许使用 Java 自带的类库。

试题 A: 星期计算

【问题描述】

已知今天是星期六,请问 2022 天后是星期几?

注意用数字 1 到 7 表示星期一到星期日。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【题解思路】

答案:7

对于填空题可以直接利用电脑计算机计算20^22,再对此数进行取余,结果为1,然后下一天即就是星期日即为7

代码示例:

public class Main {
    public static void main(String[] args) {
        double res = Math.pow(20, 22);
        res %= 7;
        System.out.println(res + 6);
    }
}

试题 B: 山

【问题描述】

这天小明正在学数数。

他突然发现有些正整数的形状像一座“山”,比如 123565321、145541,它

们左右对称(回文)且数位上的数字先单调不减,后单调不增。

小明数了很久也没有数完,他想让你告诉他在区间 [2022, 2022222022] 中有

多少个数的形状像一座“山”。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【题解思路】

答案:3138

读题可知这是道判断回文题,并且具有单调条件!!!

回文数左右对称,所以只需判断是否回文,然后再判断左边的数单调不减,则右边的数一定单调不增。

package lanqiao;
public class B_山 {
  //答案:3138
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    long ans=0;
    for(long i=2022;i<=2022222022;i++) {
      if(check(i)) {
        ans++;
      }
    }
    System.out.println(ans);
  }
  private static boolean check(long i) {
    //判断是否回文
    String string = String.valueOf(i);
    StringBuilder sBuilder = new StringBuilder(string);
    if(string.compareTo(sBuilder.reverse().toString())==0) {  //是回文数
      for(int j=0;j<string.length()/2;j++) {
        int pre = Integer.valueOf(string.charAt(j));
        int aft = Integer.valueOf(string.charAt(j+1));
        if(aft<pre)
          return false;
      }
      System.out.println(i);
      return true;
    }
    return false;
  }
}

试题 C: 字符统计

【问题描述】

给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。

如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。

【输入格式】

一个只包含大写字母的字符串 S .

【输出格式】

若干个大写字母,代表答案。

【样例输入】

BABBACAC

【样例输出】

AB

【评测用例规模与约定】

对于 100% 的评测用例,1 ≤ |S | ≤ 106.

【题解思路】

这道题很简单,直接利用HashMap存储每个字母出现的次数,再用TreeSet存储,使其按照字典序排列,最后输出次数最多的字母

/**
 * 
 */
package lanqiao;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class C_字符统计 {
  public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    String string = scanner.next();
    Map<Character, Integer> map = new HashMap<>();
    int ans_count = Integer.MIN_VALUE;
    for(int i=0;i<string.length();i++) {
      char c = string.charAt(i);
      if(map.get(c)==null) {
        map.put(c, 1);
      }else {
        map.put(c, map.get(c)+1);
      }
      if(map.get(c)>ans_count) {
        ans_count=map.get(c);
      }
    }
    Set<Character> ansCharacters = new TreeSet<>();
    for(Map.Entry<Character, Integer> entry:map.entrySet()) {
      if(entry.getValue()==ans_count) {
        ansCharacters.add(entry.getKey());
      }
    }
    for(Character c:ansCharacters) {
      System.out.print(c);
    }
  }
}

思路二:

直接统计输出即可:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int[] arr = new int[26];
        for (int i = 0; i < s.length(); i++) {
            arr[s.charAt(i) - 'A']++;
        }
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < 26; i++) {
            max = Math.max(max, arr[i]);
        }
        for (int i = 0; i < 26; i++) {
            if(arr[i] == max) System.out.print((char) (i+'A'));
        }
    }
}

试题 D: 最少刷题数

【问题描述】

小蓝老师教的编程课有 N 名学生,编号依次是 1 . . . N。第 i 号学生这学期

刷题的数量是 Ai。

对于每一名学生,请你计算他至少还要再刷多少道题,才能使得全班刷题

比他多的学生数不超过刷题比他少的学生数。

【输入格式】

第一行包含一个正整数 N。

第二行包含 N 个整数:A1, A2, A3, . . . , AN.

【输出格式】

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

【样例输入】

5

12 10 15 20 6

【样例输出】

0 3 0 0 7

【评测用例规模与约定】

对于 30% 的数据,1 ≤ N ≤ 1000, 0 ≤ Ai ≤ 1000.

对于 100% 的数据,1 ≤ N ≤ 100000, 0 ≤ Ai ≤ 100000

【题解思路】

用数组接收每个同学刷题数量,然后先对每个学生的刷题数进行从小到大排列,观察发现,需要再刷题的学生只有前半部分学生,需要刷题人数为n/2,而再刷的题目数量为中间同学的刷题量与该同学的刷题量的差值,然后利用左右与中间值相同数量,求出差值即可

package lanqiao;
import java.util.Arrays;
import java.util.Scanner;
public class D_最少刷题数 {
  public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    int N=scanner.nextInt();
    int[] arr = new int[N];
    int[] find = new int[N];
    for(int i=0;i<N;i++) {
      int num = scanner.nextInt();
      arr[i]=num;
      find[i]=num;
    }
    Arrays.sort(find);
    for(int i=0;i<N;i++) {
      //在find中查找arr[i]的位置
      int pos = Arrays.binarySearch(find, arr[i]);
      //计算其左边的数
      int less = pos;
      int more = N-pos-1;
      if(more>less) {  //刷题多的多余刷题少的
        int d = more-less;
        int num = find[pos+d/2]-find[pos]+1;
        System.out.print(num+" ");
      }else {
        System.out.print(0+" ");
      }
    }
  }
}

关注博主不迷路,持续更新中…

目录
相关文章
|
28天前
|
缓存 算法 Java
Java 实现的局域网管控软件的性能调优
局域网管控软件在企业网络管理中至关重要,但随着网络规模扩大和功能需求增加,其性能可能受影响。文章分析了数据处理效率低下、网络通信延迟和资源占用过高等性能瓶颈,并提出了使用缓存、优化算法、NIO库及合理管理线程池等调优措施,最终通过性能测试验证了优化效果,显著提升了软件性能。
34 1
|
4月前
|
JavaScript 前端开发 Java
Java入门软件及基础语法
**摘要:** - **IDEA:** IntelliJ IDEA,顶级Java开发环境,支持Java,JS,JQuery,Ajax调试. - **JDK:** Java开发包含编译器`javac`,JVM,辅助运行Java程序,核心含JRE,tools.jar,rt.jar. - **Git:** 分布式版本控制,管理源代码,支持回溯,协作,远程备份. - **基础语法:** - `if`: 控制流,单/多分支选择,可嵌套,省略单行大括号. - `switch`: 表达式匹配`case`值,执行对应代码,需`break`防穿透.
31 1
|
4月前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
4月前
|
供应链 安全 Java
软件架构一致性问题之通过软件供应链管理提升研发体验如何解决
软件架构一致性问题之通过软件供应链管理提升研发体验如何解决
53 0
|
5月前
|
Java 关系型数据库 开发者
Java编程设计原则:构建稳健、可维护的软件基石
Java编程设计原则:构建稳健、可维护的软件基石
|
6月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
79 1
|
6月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
107 0
|
6月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
82 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
83 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
89 0