第十届蓝桥杯大赛软件类省赛 Java 大学 C 组 题解
试题 A: 求和
本题总分:5 分
【问题描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包
括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 2019 中,所有这样的数的和是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:答案1905111
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <=2019; i++) {
String s=Integer.toString(i);//转化成字符串,contains方法判断是否包含;
if(s.contains("2") ||s.contains("0") ||s.contains("1")||s.contains("9")){
sum+=i;
}
}
System.out.println(sum);
}
程序结果;
试题 B: 矩形切割
本题总分:5 分
【问题描述】
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方
形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为 5 和 3 的材料(记为 5 × 3),小明会依次切出
3 × 3、2 × 2、1 × 1、1 × 1 共 4 个正方形。
现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会切出多少个正方形?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解: 答案:21
(可以手算的)
int m=2019;
int n=342;
int count=0;
while(true){ //每次切割最大边长都是两条边中最小的那条边的边长;
if(m>n){
m=m-n;
count++;
}
if(m<n){
n=n-m;
count++;
}
if(n==m){//当两条边相等则结束循环
count++;
break;
}
}
System.out.println(count);
}
试题 C: 不同子串
本题总分:10 分
【问题描述】
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解: 答案:100;
public static void main(String[] args) {
//HashSet集合,字符串截取substring()
HashSet set=new HashSet();
String str="0100110001010001";
int c=str.length();
while(c>0){
int d=str.length()-c+1;
for(int i=0;i<c;i++){
String ss=str.substring(i,i+d);
set.add(ss);
}
c--;
}
System.out.println(set.size());
}
试题 D: 质数
本题总分:10 分
【问题描述】
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算
第 2019 个质数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解:答案:17569
public static void main(String[] args) {
int count=0;
for (long n = 2;; n++) {
boolean a=true;
for (long i = 2; i <=Math.sqrt(n); i++) {
if(n%i==0)
a=false;
}if(a==true) {
count++;
}else {
continue;
}
if(count==2019){
System.out.println(n); //17569
break;
}
}
}
试题 E: 最大降雨量
本题总分:15 分
【问题描述】
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个
数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使
用。
每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术
施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路:
逆推
周日后四位46 47 48 49
周六后四位42 43 44 45
周五后四位38 39 40 41
周四后四位34 35 36 37
那天是34;
49-16+1=34;
试题 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。
思路:把坐标写纸上,对比前后坐标的变化;
代码演示:
public static void main(String[] args) {
Scanner sr=new Scanner(System.in);
int n=sr.nextInt();
int m=sr.nextInt();
int[][] arr=new int[n][m];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j]=sr.nextInt();
}
}
for (int i = 0; i <m; i++) {
for (int j = n-1; j >=0; j--) {//倒着输出
System.out.print(arr[j][i]+" "); //旋转
}
System.out.println();
}
}
程序结果:
推荐阅读
-
【第十一届蓝桥杯大赛软件类省赛 B组】试题A 跑步训练
-
第十届蓝桥杯大赛软件类省赛 Java 大学 B试题 F: 特别数的和 解答
-
第六题·试题 F: 特别数的和- 2019年第十届蓝桥杯大赛软件类省赛
-
【蓝桥杯考前突击】第十届蓝桥杯省赛C/C++大学B组 试题 G 完全二叉树的权值
-
【蓝桥杯考前突击】第十届蓝桥杯省赛C/C++大学B组 试题 D 数的分解
-
Python解答第十届蓝桥杯大赛个人赛软件类C
-
第十一届蓝桥杯 Java C组 省赛模拟赛试题(题解)
-
第十届蓝桥杯大赛软件类省赛 Java 大学 C 组 题解
-
第九届蓝桥杯大赛个人赛省赛(软件类) Java 大学C组 题解
-
第九届蓝桥杯大赛个人赛决赛(软件类)真题--C大学B组--激光样式题解(C语言)