当前位置:   article > 正文

第十四届蓝桥杯三月真题刷题训练——第 11 天_费用报销填空题

费用报销填空题

目录

第 1 题:卡片

题目描述

运行限制

第 2 题:路径_dp+gcd

运行限制

第 3 题:字符统计

问题描述

输入格式

输出格式

样例输入

样例输出

评测用例规模与约定

运行限制

第 4 题:费用报销  


第 1 题:卡片

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。

小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 1 拼到多少。

例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,

但是拼 11 时卡片 1 已经只有一张了,不够拼出11。

现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?

提示:建议使用计算机编程解决问题。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

  1. package 第十四届蓝桥杯三月真题刷题训练.day11;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.io.StreamTokenizer;
  6. import java.util.Arrays;
  7. /**
  8. * @author yx
  9. * @date 2023-03-14 8:28
  10. */
  11. public class 卡片 {
  12. static PrintWriter out =new PrintWriter(System.out);
  13. static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
  14. static StreamTokenizer in=new StreamTokenizer(ins);
  15. /**
  16. * 输入
  17. * in.nextToken()
  18. * int a= (int)in.nval;
  19. *
  20. * 输出
  21. * out.print();
  22. * out.flush();
  23. */
  24. static int[] nums=new int[10];
  25. static int i;
  26. public static void main(String[] args) {
  27. i=0;
  28. while (true){
  29. i++;
  30. char[] num=(i+"").toCharArray();
  31. int length=num.length;
  32. for (int j = 0; j < length; j++) {
  33. nums[num[j] - '0']++;
  34. if(nums[num[j]-'0']==2021&&j==length-1) {
  35. out.println(i);
  36. out.flush();
  37. return;
  38. }else if(nums[num[j]-'0']==2021&&j!=length-1){
  39. out.println(i-1);
  40. out.flush();
  41. return;
  42. }
  43. }
  44. }
  45. }
  46. }

第 2 题:路径_dp+gcd

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。

小蓝的图由 2021 个结点组成,依次编号 1 至 2021。

对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。

例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

提示:建议使用计算机编程解决问题。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

  1. package 第十四届蓝桥杯三月真题刷题训练.day11;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.io.StreamTokenizer;
  6. /**
  7. * @author yx
  8. * @date 2023-03-14 8:54
  9. */
  10. public class 路径_01背包_gcd {
  11. static PrintWriter out = new PrintWriter(System.out);
  12. static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));
  13. static StreamTokenizer in = new StreamTokenizer(ins);
  14. /**
  15. * 输入
  16. * in.nextToken()
  17. * int a= (int)in.nval;
  18. *
  19. * 输出
  20. * out.print();
  21. * out.flush();
  22. */
  23. public static void main(String[] args) {
  24. int[] nums = new int[2022];
  25. for (int i = 1; i <= 2021; i++) {
  26. //这个地方也比较细节,到i+21时为最大更新区间
  27. for (int j = i+1; j <=i+21 ; j++) {
  28. if (j == 2022) {
  29. //当遍历到2022时,说明在此循环内已经完成了2021之前的更新
  30. //2022超出最大范围2021,所以退出当前循环
  31. //继续下一个i+1,更新从i+1~2021的最小路径
  32. break;
  33. }
  34. //i*j的最小公倍数等于(i*j)/最大公约数
  35. int temp = gcd(i, j);
  36. if (nums[j] == 0) {//初始化
  37. nums[j] = (int)(i * j / temp) + nums[i];
  38. } else {//进行最优化迭代,选出最短路径
  39. nums[j] = Math.min(nums[j], i * j / temp + nums[i]);
  40. }
  41. }
  42. }
  43. out.println(nums[2021]);
  44. out.flush();
  45. }
  46. static int gcd(int m, int n) {
  47. return n != 0 ? gcd(n, m % n) : m;
  48. }
  49. }

第 3 题:字符统计

问题描述

给定一个只包含大写字母的字符串 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。

输入格式

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

输出格式

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

样例输入

BABBACAC

样例输出

AB

评测用例规模与约定

对于 100%的评测用例, 1≤∣S∣≤10^6.

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码:

  1. package 第十四届蓝桥杯三月真题刷题训练.day11;
  2. import java.io.*;
  3. import java.util.Arrays;
  4. import java.util.HashMap;
  5. /**
  6. * @author yx
  7. * @date 2023-03-14 9:53
  8. */
  9. public class 字符统计 {
  10. static PrintWriter out =new PrintWriter(System.out);
  11. static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
  12. static StreamTokenizer in=new StreamTokenizer(ins);
  13. /**
  14. * 输入
  15. * in.nextToken()
  16. * int a= (int)in.nval;
  17. *
  18. * 输出
  19. * out.print();
  20. * out.flush();
  21. */
  22. public static void main(String[] args) throws IOException {
  23. char[] strings=ins.readLine().toCharArray();
  24. int length1=strings.length;
  25. int max=0;
  26. int[] nums1=new int[26];
  27. for (int i = 0; i < length1; i++) {
  28. nums1[strings[i]-'A']++;
  29. }
  30. int length2=nums1.length;
  31. int[]nums2= Arrays.copyOf(nums1,nums1.length);
  32. Arrays.sort(nums1);
  33. max=nums1[25];
  34. for (int i = 0; i < length2; i++) {
  35. if(nums2[i]==max){
  36. System.out.print((char)('A'+i));
  37. }
  38. }
  39. }
  40. }

第 4 题:费用报销  

晚上补题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/791003
推荐阅读
相关标签
  

闽ICP备14008679号