欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第十届蓝桥杯大赛软件类省赛 Java 大学 C 组 题解

程序员文章站 2022-06-13 10:21:51
...

试题 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);

	}

程序结果;
第十届蓝桥杯大赛软件类省赛 Java 大学 C 组 题解

试题 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();
		}
	}

程序结果:
第十届蓝桥杯大赛软件类省赛 Java 大学 C 组 题解

相关标签: 蓝桥杯 java