第十届蓝桥杯省赛JavaC组真题——详细答案对照(完整版-包含打扫机器人的视频全过程讲解与编码内容对照)
目录
A、求和
B、矩形切割
C、不同子串
D、质数
E、最大降雨量
F、旋转
G、外卖店优先级
H、人物相关性分析
I、等差数列
J、打扫机器人
A、求和
试题 A: 求和
本题总分:5 分
【问题描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包
括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 2019 中,所有这样的数的和是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:
package action;public class demo {public static void main(String[] args) {int sum = 0;for (int i = 0; i <= 2019; i++) {// 将数字转换为字符串String str = String.valueOf(i);if (str.contains("2") || str.contains("0") || str.contains("1") ||str.contains("9")) {sum += i;}}System.out.println(sum);}
}
B、矩形切割
试题 B: 矩形切割
本题总分:5 分
【问题描述】
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方
形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为 5 和 3 的材料(记为 5 × 3),小明会依次切出
3 × 3、2 × 2、1 × 1、1 × 1 共 4 个正方形。
现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会
切出多少个正方形?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:
package action;public class demo {public static void main(String[] args) {int x = 2019;//目标数据int y = 324;System.out.println(f(x, y, 0));}public static int f(int x, int y, int count) {if (x == 0 || y == 0) {return count;}if (x >= y) {return f((x - y), y, ++count);} else {return f(x, (y - x), ++count);}}
}
C、不同子串
试题 C: 不同子串
本题总分:10 分
【问题描述】
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:
package action;import java.util.HashSet;
import java.util.Set;public class demo {public static void main(String[] args) {String str = "0100110001010001";Set<String> set = new HashSet<String>();for (int i = 0; i <= str.length(); i++) {for (int j = i+1; j <= str.length(); j++) {set.add(str.substring(i, j));}}System.out.println(set.size());}
}
D、质数
试题 D: 质数
本题总分:10 分
【问题描述】
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算
第 2019 个质数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:
package action;public class demo {public static void main(String[] args) {int count = 1;for (int i = 1; i <= 2019; i++) {for (int j = count + 1;; j++) {if (f(j)) {count = j;break;}}}System.out.println(count);}/*** 判断一个数是否是质数* @param x* @return*/public static boolean f(int x) {if (x < 3) {return (x > 1);}for (int i = 2; i <= Math.sqrt(x); i++) {if (x % i == 0) {return false;}}return true;}
}
E、最大降雨量
试题 E: 最大降雨量
本题总分:15 分
【问题描述】
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个
数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使
用。
每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术
施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分
题解:
package action;public class demo {public static void main(String[] args) {System.out.println(49 - 16 + 1);}
}
F、旋转
试题 F: 旋转
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分
【问题描述】
图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时
针旋转 90 度。
我们用一个 n × m 的二维数组来表示一个图片,例如下面给出一个 3 × 4 的
图片的例子:
1 3 5 7
9 8 7 6
3 5 9 7
这个图片顺时针旋转 90 度后的图片如下:
3 9 1
5 8 3
9 7 5
7 6 7
给定初始图片,请计算旋转后的图片。
【输入格式】
输入的第一行包含两个整数 n 和 m,分别表示行数和列数。
接下来 n 行,每行 m 个整数,表示给定的图片。图片中的每个元素(像
素)为一个值为 0 至 255 之间的整数(包含 0 和 255)。
【输出格式】
输出 m 行 n 列,表示旋转后的图片。
【样例输入】
3 4
1 3 5 7
9 8 7 6
3 5 9 7
【样例输出】
3 9 1
5 8 3
9 7 5
7 6 7
【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ n, m ≤ 10。
对于 60% 的评测用例,1 ≤ n, m ≤ 30。
对于所有评测用例,1 ≤ n, m ≤ 100。
题解:
package action;import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int [][] arr = new int[n+1][m+1];for (int i = 1; i < arr.length; i++) {for (int j = 1; j < arr[i].length; j++) {arr[i][j] = sc.nextInt();}}int [][] brr = new int[m+1][n+1];// 转换for (int i = 1; i < brr.length; i++) {for (int j = 1; j < brr[i].length; j++) {brr[i][j] = arr[n-j+1][i]; }}// 打印for (int i = 1; i < brr.length; i++) {for (int j = 1; j < brr[i].length; j++) {System.out.print(brr[i][j]+" ");}System.out.println();}}
}
G、外卖店优先级
试题 G: 外卖店优先级
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】
“饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有
一个优先级,初始时 (0 时刻) 优先级都为 0。
每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减
到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。
如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果
优先级小于等于 3,则会被清除出优先缓存。
给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优
先缓存中。
【输入格式】
第一行包含 3 个整数 N、M 和 T。
以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到
一个订单。
【输出格式】
输出一个整数代表答案。
【样例输入】
2 6 6
1 1
5 2
3 1
6 2
2 1
6 2
【样例输出】
1
【样例解释】
6 时刻时,1 号店优先级降到 3,被移除出优先缓存;2 号店优先级升到 6,
加入优先缓存。所以是有 1 家店 (2 号) 在优先缓存中。
【评测用例规模与约定】
对于 80% 的评测用例,1 ≤ N, M, T ≤ 10000。
对于所有评测用例,1 ≤ N, M, T ≤ 100000,1 ≤ ts ≤ T,1 ≤ id ≤ N
题解:
package action;import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int t = sc.nextInt();int[][] arr = new int[n + 1][t + 1];for (int i = 0; i < m; i++) {int t1 = sc.nextInt(); // 时刻int n1 = sc.nextInt(); // 几店arr[n1][t1]++; // n店t时刻的订单数}int count = 0; // 优先缓存个数// 对每家店进行计算for (int i = 1; i <= n; i++) {int num = 0; // 缓存值boolean f = false; // 判断是否是优先缓存for (int j = 1; j <= t; j++) {if (arr[i][j] == 0) { // 没有订单时if (num <= 0) {num = 0;} else {num--;}} else {num += 2 * arr[i][j]; // 有订单时:缓存值是每个订加2}if (num > 5) {f = true;}if (num <= 3) {f = false;}}if (f) {count++;}}System.out.println(count);}
}
测试数据通过
H、人物相关性分析
试题 H: 人物相关性分析
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】
小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob
有多少次同时出现。
更准确的说,小明定义 Alice 和 Bob“同时出现”的意思是:在小说文本
中 Alice 和 Bob 之间不超过 K 个字符。
例如以下文本:
This is a story about Alice and Bob. Alice wants to send a private message to Bob.
假设 K = 20,则 Alice 和 Bob 同时出现了 2 次,分别是”Alice and Bob”
和”Bob. Alice”。前者 Alice 和 Bob 之间有 5 个字符,后者有 2 个字符。
注意:
1. Alice 和 Bob 是大小写敏感的,alice 或 bob 等并不计算在内。
2. Alice 和 Bob 应为单独的单词,前后可以有标点符号和空格,但是不能
有字母。例如 Bobbi 並不算出现了 Bob。
【输入格式】
第一行包含一个整数 K。
第二行包含一行字符串,只包含大小写字母、标点符号和空格。长度不超
过 1000000。
【输出格式】
输出一个整数,表示 Alice 和 Bob 同时出现的次数。
【样例输入】
20
This is a story about Alice and Bob. Alice wants to send a private message to Bob.
【样例输出】
2
【评测用例规模与约定】
对于所有评测用例,1 ≤ K ≤ 1000000。
题解:
package action;import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int K = sc.nextInt();sc.nextLine();String str = sc.nextLine();int count = 0;for (int i = 0; i < str.length() - 8; i++) {if (str.charAt(i) == 'A') {String alicestr = str.substring(i, i + 5);if (alicestr.equals("Alice")) {for (int j = 0; j < K - 3; j++) {if (str.charAt(i + j) == 'B') {String bobstr = str.substring(i + j, i + j + 3);if (bobstr.equals("Bob")) {count++;}}}}}if (str.charAt(i) == 'B') {String bobstr = str.substring(i, i + 3);System.out.println(bobstr);if (bobstr.equals("Bob")) {for (int j = 0; j < K - 5; j++) {if (str.charAt(i + j) == 'A') {String alicestr = str.substring(i + j, i + j + 5);System.out.println(alicestr);if (alicestr.equals("Alice")) {count++;}}}}}}System.out.println(count);}
}
测试数据通过
I、等差数列
试题 I: 等差数列
时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分
【问题描述】
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一
部分的数列,只记得其中 N 个整数。
现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有
几项?
【输入格式】
输入的第一行包含一个整数 N。
第二行包含 N 个整数 A1, A2, · · · , AN。(注意 A1 ∼ AN 并不一定是按等差数
列中的顺序给出)
【输出格式】
输出一个整数表示答案。
【样例输入】
5
2 6 4 10 20
【样例输出】
10
【样例说明】
包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、
18、20。
【评测用例规模与约定】
对于所有评测用例,2 ≤ N ≤ 100000,0 ≤ Ai ≤ 109。
题解:
package action;import java.util.Arrays;
import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < arr.length; i++) {arr[i] = sc.nextInt();}Arrays.sort(arr);// 获取最小差值int min = arr[arr.length - 1];for (int i = 1; i < arr.length; i++) {if ((arr[i] - arr[0]) < min) {min = (arr[i] - arr[0]);}}System.out.println((arr[arr.length - 1] - arr[0]) / min + 1);}
}
J、打扫机器人
试题 J: 扫地机器人
时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分
【问题描述】
小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所
示。
走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中。
已知扫地机器人每分钟可以移动到左右相邻的方格中,并将该区域清扫干
净。
请你编写一个程序,计算每台机器人的清扫路线,使得
1. 它们最终都返回出发方格,
2. 每个方格区域都至少被清扫一遍,
3. 从机器人开始行动到最后一台机器人归位花费的时间最少。
注意多台机器人可以同时清扫同一方块区域,它们不会互相影响。
输出最少花费的时间。
在上图所示的例子中,最少花费时间是 6。第一台路线:2-1-2-3-4-3-2,清
扫了 1、2、3、4 号区域。第二台路线 5-6-7-6-5,清扫了 5、6、7。第三台路线
10-9-8-9-10,清扫了 8、9 和 10。
【输入格式】
第一行包含两个整数 N 和 K。
接下来 K 行,每行一个整数 Ai。案例:
输入:
10 3
3 5 8
输出:
6
题解视频:
【JavaC组第十届第十题扫地机器人_哔哩哔哩_bilibili】
题解:
package action;
import java.util.Arrays;
import java.util.Scanner;public class demo {static int N,K;static int arr[];//存储机器人坐标public static void main(String[] args) {Scanner sc=new Scanner(System.in);N=sc.nextInt();K=sc.nextInt();arr=new int[K];for (int i = 0; i < K; i++) {arr[i]=sc.nextInt();}//输入流没用了sc.close();Arrays.sort(arr);//自然排序int l=0,r=N,mid=0;while (l <= r) {//相当于二分查找mid=(r+l)>>>1;if(check(mid)) {r = mid-1;}else l = mid+1; }System.out.println((mid-1)*2);}private static boolean check(int m) {int sum=0;//记录扫描区域for (int i = 0; i < K; i++) {//遍历每个机器人if(arr[i]-m<=sum) {if(arr[i]<=sum) {sum=arr[i]+m-1;}else sum+=m;}else return false;}return sum >= N;}
}
测试数据:
10 3
5 2 10
希望能对大家有所帮助。
第十届蓝桥杯省赛JavaC组真题——详细答案对照(完整版-包含打扫机器人的视频全过程讲解与编码内容对照)相关推荐
- 第九届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
目录 A.哪天返回 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 H.等腰三角形 I.小朋友崇拜圈 J.耐摔指数 A.哪天返回 小明被不明势 ...
- 第七届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
目录 A.有奖猜谜 B.煤球数目 C.平方怪圈 D.骰子游戏 E.分小组 F.凑算式 G.搭积木 H.冰雹数 I.四平方和 J.密码脱落 A.有奖猜谜 小明很喜欢猜谜语. 最近,他被邀请参加了X星球的 ...
- 第七届蓝桥杯省赛JavaC组真题——详细答案对照(完整版·冰雹数递归解法·超简易)
目录 A.有奖猜谜 B.煤球数目 C.平方怪圈 D.骰子游戏 E.分小组 F.凑算式 G.搭积木 H.冰雹数 题解1: 题解2: [2022级王组顼]先生提供的简易写法,需要思考规律. 题解3: [2 ...
- 第十三届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
前言 本次题目我认为还是比较难的,有人做了一个分析,我们来看看啊. 话说真的对于大专生来说已经是非常难的了呢,能拿到省一的基本上都是万里挑一的孩子呢. 目录 前言 试题 A: 排列字母 试题 B: 特 ...
- 第八届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
目录 A.外星日历 B.兴趣小组 C.纸牌三角形 D.承压计算 E.杨辉三角(填空) F.最大公共子串 G.Excle地址 H.拉马车 I.青蛙跳杯子 J.图形排版 A.外星日历 某星系深处发现了文明 ...
- 2019年第十届蓝桥杯省赛B组真题解析
A 组队 试题A 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球员担任 1号位至 5号位时的评分如下表所示.请你计算首 ...
- 第六届蓝桥杯省赛javaB组真题及答案
第一题:三角形面积如图1所示.图中的所有小方格面积都是1.那么,图中的三角形面积应该是多少呢? 答案:88-84/2-64/2-82/2=28: 第二题:立方变自身观察下面的现象,某个数字的立方,按位 ...
- 蓝桥杯 第十三届蓝桥杯省赛C++组真题 修剪灌木 Python
题目 爱丽丝要完成一项修剪灌木的工作. 有 NN 棵灌木整齐的从左到右排成一排. 爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 00 厘米. 爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪 ...
- 第十届蓝桥杯国赛Scratch编程真题解析:沙漠变绿洲
沙漠变绿洲 准备工作 导入背景<Desert>,在背景上绘制4个树坑 导入角色<Trees> 绘制水滴角色 编程实现 游戏开始,按下并移动鼠标,水滴会从鼠标处呈抛物线落下,水滴 ...
最新文章
- CVPR 2020: 移动端机器学习的研究实现
- C++打印一个螺旋形的矩阵 a matrix traversing it spirally算法(附完整源码)
- 分析FLV文件分析和解析器的开源代码
- 用android做用户管理中心,Android 如何设计用户Session管理?
- android 系统(155)---如何自己添加号码归属地数据库?
- JNI 之 HelloWorld
- 日本第四次产业革命瞄准物联网
- MAC在命令行运行不带窗口的 Emacs -- 比窗口模式占用的资源更少一些
- OD查找QQ sessionkey教程
- oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
- 两条波浪线符号_最新-Word上中下划波浪线符号怎么打 精品
- Win10企业版系统安装 NET Framework 4.8的时候提示错误信息
- 西电计科四年(学院任选)课程推荐
- 从万物归零到虚拟与现实交错
- matlab函数 bsxfun(高效代码)
- QT编程从入门到精通之一:“第一章:认识QT”之“1.1 Qt简介”
- 自考本计算机软件基础ppt,计算机软件基础自考本科
- 记录一下获取的动态ip与路由器ip不符所以要纠错的日常
- 计算平均成绩(函数专题),输入某位同学各门课的成绩,输出平均成绩。输入的成绩均为五级制成绩,五级制成绩转换为百分之成绩的规则如下:'A'换为百分之成绩为95分,'B'对应85分,C对应75分,'D'
- excel 中vb组合框_Excel组合框上的标题
热门文章
- oracle 创建nchar类型,nchar类型的用法!
- pyinstaller打包exe在其他机器无法运行_详解pyinstaller selenium python3 chrome打包问题!解决率100%...
- html怎么让图片重叠_PS倒影效果怎么做,如何利用PS给产品制作倒影
- html 横屏内容显示不全_为什么我的文本显示不全?
- Collections.toMap 报错 空指针 key重复
- 通过自定义资源扩展Kubernetes
- CSS+jQuery/JavaScript图片切换播放
- 24、JSON与OC互相转化
- 只能在栈上或者堆上创建对象
- 如何快速分析一款ios软件或需求的大流程,然后在业务层实现,不牵扯到界面?...