【备战蓝桥杯 | 软件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+" ");
      }
    }
  }
}

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

目录
相关文章
|
3月前
|
Java 数据安全/隐私保护 计算机视觉
银行转账虚拟生成器app,银行卡转账截图制作软件,java实现截图生成工具【仅供装逼娱乐用途】
本内容提供Java生成自定义图片的示例代码,涵盖基础图像创建、文本添加及保存功能,适合学习2D图形编程。包括教学示例图片生成、文本图层处理和数字水印技术实现方案。
|
3月前
|
XML Java 数据格式
微信不封号无限加人软件,微信一键自动加人软件,java实现批量化加人
本项目包含手机号生成工具与附近人列表展示功能。手机号工具支持批量生成、格式验证及CSV导出,可自定义前缀生成符合中国规则的随机号码。
|
3月前
|
Java
银行转账p图软件,对公转账截图生成器,java版开发银行模拟器【仅供学习参考】
这是一套简单的银行账户管理系统代码,包含`BankAccount`和`BankSystem`两个核心类。`BankAccount`负责单个账户的管理
|
3月前
|
Java 数据安全/隐私保护
银行转账虚拟生成器app,银行卡转账截图制作软件,java实现截图生成工具【仅供装逼娱乐用途】
本项目提供了一套基于Java的图片处理教学方案,包含自定义图片生成、图像水印添加及合法电子凭证生成技术示例。
|
8月前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
269 6
|
8月前
|
算法 Java C++
【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
本文介绍了经典的0/1背包问题及其动态规划解法。
217 5
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
190 1
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
186 0
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
144 0
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
158 0