首页 » 排名链接 » Java第十一届 蓝桥杯部分省赛真题 及答案解析(答案本题一届整数输入)

Java第十一届 蓝桥杯部分省赛真题 及答案解析(答案本题一届整数输入)

admin 2024-10-24 06:30:01 0

扫一扫用手机浏览

文章目录 [+]

本题总分:10 分

【问题描述】

7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民

Java第十一届 蓝桥杯部分省赛真题 及答案解析(答案本题一届整数输入) 排名链接
(图片来自网络侵删)

走过了 99 年。

请计算:7 ^ 2020 mod 1921,其中 A mod B 表示 A 除以 B 的余数。

【答案提交】

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

参考代码如下:

package 第十一届蓝桥杯;import java.math.BigInteger;public class A指数计算 { public static void main(String[] args) { BigInteger num1 = new BigInteger("7"); BigInteger num2 = new BigInteger("1921"); BigInteger num3=num1.pow(2020).remainder(num2); System.out.println(num3); }}

试题 B: 跑步训练

本题总分:10 分

【问题描述】

小明要做一个跑步训练。

初始时,小明充满体力,体力值计为 10000。
如果小明跑步,每分钟损耗600 的体力。
如果小明休息,每分钟 增加 300 的体力。
体力的损耗和增加都是均匀变化的。

小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。
如果某个时刻小明的体力到达 0,他就停止锻炼。

请问小明在多久后停止锻炼。
为了使答案为整数,请以秒为单位输出答案。

答案中只填写数字,不填写单位。

【答案提交】

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

//参考代码package 第十一届蓝桥杯;public class B跑步训练 { public static void main(String[] args) { int target = 10000; int count = 0; boolean flag = true; while (true) { //如果小于600体力并且需要跑步,证明这一分钟跑不完 if (target < 600 && flag){ break; } if (flag) { target -= 600; flag = false; } else { target += 300; flag = true; } count++; }// System.out.println(count); //最后要求秒数,一分钟花费600体力,一秒花费10体力,体力除10就是剩下的跑步时间 int time = count 60+target/10; System.out.println(time); }}

试题 C: 合并检测

本题总分:10 分

【问题描述】

最近存在A病,最近在 A 国蔓延,为了尽快控制病,A 国准备给大量民众进病检测。

然而,用于检测的试剂盒紧缺。

为了解决这一困难,科学家想了一个办法:合并检测。
即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。
如果结果为阴性,则说明这 k个人都是阴性,用一个试剂盒完成了 k 个人的检测。
如果结果为阳性,则说明至少有一个人为阳性,需要将这 k 个人的样本全部重新独立检测(从理论上看,如果检测前 k 1 个人都是阴性可以推断出第 k 个人是阳性,但是在实际操作中不会利用此推断,而是将 k 个人独立检测),加上最开始的合并检测,一共使用了 k + 1 个试剂盒完成了 k 个人的检测。

A 国估计被测的民众的感染率大概是 1%,呈均匀分布。
请问 k 取多少能最节省试剂盒?

【答案提交】

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

试题 F: 分类计数

时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分

【问题描述】

输入一个字符串,请输出这个字符串包含多少个大写字母,多少个小写字

母,多少个数字。

【输入格式】

输入一行包含一个字符串。

【输出格式】

输出三行,每行一个整数,分别表示大写字母、小写字母和数字的个数。

【样例输入】

1+a=Aab

【样例输出】

1

3

1

【评测用例规模与约定】

对于所有评测用例,字符串由可见字符组成,长度不超过 100。

package 第十一届蓝桥杯;import java.util.Scanner;public class F分类计数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); sc.close(); char[] num = s.toCharArray(); int upp=0,low=0,nums=0; for (char c:num){ if(Character.isUpperCase(c)){ ++upp; } else if(Character.isLowerCase(c)){ ++low; } else if(Character.isDigit(c)){ ++nums; } } System.out.println(upp); System.out.println(low); System.out.println(nums); }}

试题 G: 整除序列

时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分

【问题描述】

有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输

出这个序列中值为正数的项。

【输入格式】

输入一行包含一个整数 n。

【输出格式】

输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。

【样例输入】

20

【样例输出】

20 10 5 2 1

【评测用例规模与约定】

对于 80% 的评测用例,1 ≤ n ≤ 109。

对于所有评测用例,1 ≤ n ≤ 1018。

//参考代码package 第十一届蓝桥杯;import java.util.Scanner;public class G整除序列 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); while (n != 0) { System.out.print(n + " "); n = n >> 1;//等价于/2,位运算相对快一些 } }}

试题 H: 走方格

时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分

【问题描述】

在平面上有一些二维的点阵。

这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,

从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。

现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。
只能向右或者向下

走。

注意,如果行号和列数都是偶数,不能走入这一格中。

问有多少种方案。

【输入格式】

输入一行包含两个整数 n, m。

【输出格式】

输出一个整数,表示答案。

【样例输入】

3 4

【样例输出】

2

【样例输入】

6 6

【样例输出】

0

【评测用例规模与约定】

对于所有评测用例,1 ≤ n ≤ 30, 1 ≤ m ≤ 30。

package 第十一届蓝桥杯;import java.util.Scanner;public class H走方格 { public static void main(String[] args) { //输入矩阵的宽高 Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); sc.close(); int[][] dp = new int[n][m]; dp[0][0]=1; //这个规律是只能往右下走,也就是只能取左上的值 for (int i=0;i<n;i++){ for(int j=0;j<m;j++){ //第一行一列无需处理 if(i==0 && j==0){ continue; } //只要不是第一行就可以取上面的 if(i>0){ dp[i][j]+=dp[i-1][j]; } //只要不是第一列就可以取左面的 if(j>0){ dp[i][j]+=dp[i][j-1]; } //如果是偶数行列不能取值,这里是奇数,因为我的是从0开始,所以偶数的就变成了奇数 if((i&1)==1 && (j&1)==1){ dp[i][j]=0; } } } System.out.println(dp[n-1][m-1]); }}

试题 I: 字符串编码

时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分

【问题描述】

小明发明了一种给由全大写字母组成的字符串编码的方法。
对于每一个大

写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →

26。

这样一个字符串就能被转化成一个数字序列:

比如 ABCXYZ → 123242526。

现在给定一个转换后的数字序列,小明想还原出原本的字符串。
当然这样

的还原有可能存在多个符合条件的字符串。
小明希望找出其中字典序最大的字

符串。

【输入格式】

一个数字序列。

【输出格式】

一个只包含大写字母的字符串,代表答案

【样例输入】

123242526

【样例输出】

LCXYZ

【评测用例规模与约定】

对于 20% 的评测用例,输入的长度不超过 20。

对于所有评测用例,输入的长度不超过 200000。

PS:

  这个题我写复杂了,但是筛选条件就是这些,某些取反的情况可以少些很多if

//参考代码package 第十一届蓝桥杯;import java.util.Scanner;public class I字符串编码 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); sc.close(); StringBuilder sb = new StringBuilder(); int len = s.length(); char[] num = s.toCharArray(); for (int i = 0; i < len; i++) { //1开头 if (num[i] == '1') { //第i+2位是否为0,如果为0,当前位就不能和i+1位合并成一个字母 if (i < len - 2) { //不为0 if (num[i + 2] != '0') {// System.out.println((num[i]-'0') 10 + num[i + 1] + 'A' -1 -'0' ); sb.append((char) ((num[i] - '0') 10 + num[i + 1] + 'A' - 1 - '0')); ++i; // 为0,当前位就不能和i+1位合并成一个字母,(如果合成字母,剩下一个0没办法转换) } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } //i+2已超过尽头 } else { //看i+1位是否存在 if (i < len - 1) { sb.append((char) ((num[i] - '0') 10 + num[i + 1] + 'A' - 1 - '0')); //不存在,第i位为最后一位 } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } break; } //2开头 } else if (num[i] == '2') { //看存不存在下一位 if (i < len - 1) { //看下一位是不是小于6,因为字母的大小不能超过26 if (num[i + 1] <= '6') { //看第i+2位是否存在 if (i < len - 2) { //看第i+2位是否=0 if (num[i + 2] != '0') { sb.append((char) ((num[i] - '0') 10 + num[i + 1] + 'A' - 1 - '0')); ++i; // 为0,当前位就不能和i+1位合并成一个字母,(如果合成字母,剩下一个0没办法转换) } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } //不存在的话,就直接添加就行 } else { sb.append((char) ((num[i] - '0') 10 + num[i + 1] + 'A' - 1 - '0')); break; } //如果大于6,证明不能和后一位合并 } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } //不存在下一位,这一位就直接放进去 } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } //如果大于2的话,就直接添加就行,字母没有2以上开头的 } else { sb.append((char) (num[i] - '0' + 'A' - 1)); } } System.out.println(sb.toString()); } public static char getUppLetter(int num) { System.out.println((char) (num)); return (char) (num); }}

标签:

相关文章