2021年 第12届 蓝桥杯 第1次模拟赛真题详解及小结【Java版】


  1. 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结
  2. 2014年 第05届 蓝桥杯 Java B组 省赛真题详解及小结
  3. 2015年 第06届 蓝桥杯 Java B组 省赛真题详解及小结
  4. 2016年 第07届 蓝桥杯 Java B组 省赛真题详解及小结
  5. 2017年 第08届 蓝桥杯 Java B组 省赛真题详解及小结
  6. 2018年 第09届 蓝桥杯 Java B组 省赛真题详解及小结
  7. 2019年 第10届 蓝桥杯 Java B组 省赛真题详解及小结
  8. 2020年 第11届 蓝桥杯 第1次模拟赛真题详解及小结【Java版】(校内模拟)// 官方讲解视频
  9. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】// 官方讲解视频
  10. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛 2020.07.05】【Java版】
  11. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.07.05】
  12. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第2场省赛 2020.10.17】
  13. 2020年 第11届 蓝桥杯 Java C组 省赛真题详解及小结【第1场省赛 2020.07.05】
  14. 2021年 第12届 蓝桥杯 第1次模拟赛真题详解及小结【Java版】
  15. 2021年 第12届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】
  16. 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结

  1. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
  2. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结
  3. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
  4. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
  5. 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结
  6. 2020年 第11届 蓝桥杯 Java B组 决赛真题详解及小结

目   录

模拟赛网页截图

一、试题A——答案:25600

解法一:计算器求解

解法二:编程求解

二、试题B——答案:12

解法一:for循环+check

三、试题C——答案:6973

解法一:字符串拼接

四、试题D——答案:2039190

解法一:累加求和

五、试题E——答案:217

解法一:双重for循环遍历所有组合

六、试题F

解法一:先检查月份->再检查天数

七、试题G

解法一:String.format();

八、试题H

解法一:【不会写!求巨佬支招!】

九、试题I

解法一:单层for循环

十、试题J

解法一:【不会写!求巨佬支招!】

小结


自己写的,仅供参考,欢迎交流!!!

模拟赛网页截图

   

   

   

   

一、试题A——答案:25600

问题描述

  如果一个 mp3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 mp3 文件?

答案提交

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

解法一:计算器求解

【答案】:25600

【解析】:1GB = 1024MB 。

解法二:编程求解

二、试题B——答案:12

问题描述

  如果整数 a 是整数 b 的整数倍,则称 b 是 a 的约数。
  请问,有多少个正整数是 2020 的约数。

答案提交

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

解法一:for循环+check

【答案】:12

package simulationMatch_12_2021_1;

public class _02B {

	public static void main(String[] args) {
		int answer = 0;
		for (int i = 1; i <= 2020; i++) {
			if (2020 % i == 0) {
				System.out.print(i + "、");
				answer++;
			}
		}
		System.out.println();
		System.out.println(answer);
	}

}

三、试题C——答案:6973

问题描述

  整数 1 到 6 连在一起,成为 123456,长度为 6。
  整数 1 到 12 连在一起,成为 123456789101112,长度为 15。
  请问整数 1 到 2020 连在一起,长度为多少?

答案提交

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

解法一:字符串拼接

【答案】:6973

package simulationMatch_12_2021_1;

public class _03C {

	public static void main(String[] args) {
		String str = "";
		for (int i = 1; i <= 2020; i++) {
			str += i;
		}
		System.out.println(str);
		System.out.println(str.length());
	}

}

四、试题D——答案:2039190

问题描述

  一个包含 2020 个结点的无向图,如果图中没有自环和重边,最多包含多少条边?

答案提交

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

解法一:累加求和

【答案】:2039190

【解析】:找规律!

package simulationMatch_12_2021_1;

public class _04D {

	public static void main(String[] args) {
		int answer = 0;
		for (int i = 1; i <= 2019; i++) {
			answer += i;
		}
		System.out.println(answer);
		System.out.println(2019 * (1 + 2019) / 2); // 等差数列求和公式
	}

}

五、试题E——答案:217

问题描述

  在一个序列 a = (a[1], a[2], ..., a[n]) 中,如果 (i, j) 满足 i < j 且 a[i] > a[j],则称为一个逆序对。
  例如:(3, 2, 2, 1) 中包含 6 个逆序对。
  请问,(87, 39, 35, 1, 99, 10, 54, 1, 46, 24, 74, 62, 49, 13, 2, 80, 24, 58, 8, 14, 83, 23, 97, 85, 3, 2, 86, 10, 71, 15) 中包含多少个逆序对?

答案提交

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

解法一:双重for循环遍历所有组合

(3, 2, 2, 1)怎么包含6个逆序对???不应该是5个嘛!!!

逆序对:线1、线2、线3、线5、线6。

所以,我感觉题错了!!!

package simulationMatch_12_2021_1;

public class _05E {

	public static void main(String[] args) {
		int arr1[] = { 3, 2, 2, 1 };
		int arr2[] = { 87, 39, 35, 1, 99, 10, 54, 1, 46, 24, 74, 62, 49, 13, 
				2, 80, 24, 58, 8, 14, 83, 23, 97, 85, 3, 2, 86, 10, 71, 15 };
		solve(arr1);
		solve(arr2);
	}

	public static void solve(int arr[]) {
		int answer = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				if (i < j && arr[i] > arr[j]) {
					answer++;
				}
			}
		}
		System.out.println(answer);
	}

}

六、试题F

问题描述

  小蓝正在上小学,老师要求同学们在暑假每天记日记。可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。
  没想到,日记很快就被老师发现了问题,原来小蓝记完8月31日的日记,竟又记了8月32日和8月33日的日记。这显然是有问题的,因为根本没有8月32日和8月33日。
  给定一个月份和一个日期,请问2021年有没有这一天。

输入格式

  输入的第一行包含一个整数 m,表示月份。
  第二行包含一个整数 d,表示日期。

输出格式

  如果2021年有 m 月 d 日,输入 yes,否则输出 no。

样例输入

8
32

样例输出

no

样例输入

2
28

样例输出

yes

数据规模和约定

  对于所有评测用例,1 <= m <= 20,1 <= d <= 40。

解法一:先检查月份->再检查天数

【解析】:2021年平年2月只有28天!(看电脑上的日历即可!)

1 <= m <= 20,1 <= d <= 40。

package simulationMatch_12_2021_1;

import java.util.Scanner;

public class _06F {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int d = sc.nextInt();
		if (m == 2) {
			if (1 <= d && d <= 28) {
				System.out.println("yes");
			} else {
				System.out.println("no");
			}
		} else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
			if (1 <= d && d <= 31) {
				System.out.println("yes");
			} else {
				System.out.println("no");
			}
		} else if (m == 4 || m == 6 || m == 9 || m == 11) {
			if (1 <= d && d <= 30) {
				System.out.println("yes");
			} else {
				System.out.println("no");
			}
		} else if (m >= 13) {
			System.out.println("no");
		}
	}
}

七、试题G

问题描述

  给定一个三角形的底边长度 l 和高度 h,求三角形的面积。

输入格式

  输入的第一行包含一个整数 l,表示三角形的底边长度。
  第二行包含一个整数 h,表示三角形的高。

输出格式

  输出一个数,表示三角形的面积。如果面积为整数,请直接输出这个整数,不带小数点。如果面积不是整数,请四舍五入保留正好一位小数。

样例输入

5
6

样例输出

15

样例输入

5
3

样例输出

7.5

数据规模和约定

  对于所有评测用例,1 <= l, h <= 100。

解法一:String.format();

package simulationMatch_12_2021_1;

import java.util.Scanner;

public class _07G {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int l = sc.nextInt();
		int h = sc.nextInt();
		int s = l * h / 2;
		if (l * h == s * 2) { // 面积是整数
			System.out.println(l * h / 2);
		} else { // 面积非整数
			double ll = l;
			double hh = h;
			System.out.println(String.format("%.1f", (ll * hh / 2)));
		}
	}

}

八、试题H

问题描述

  给定一个单词,请问在单词中删除 t 个字母后,能得到的字典序最小的单词是什么?

输入格式

  输入的第一行包含一个单词,由大写英文字母组成。
  第二行包含一个正整数 t。

输出格式

  输出一个单词,表示答案

样例输入

LANQIAO
3

样例输出

AIAO

数据规模和约定

  对于所有评测用例,单词长度不超过 100,t 小于单词长度。

解法一:【不会写!求巨佬支招!】

【解析】:先把字符串中ASCII值大的字母添加到集合big里面,

从前往后遍历字符串,剔除big集合中包含的字符(优先剔除ASCII值大的字符)。

不会写!!!求巨佬支招!!!

package simulationMatch_12_2021_1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class _08H {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int t = sc.nextInt();

		char ch[] = str.toCharArray();
		Arrays.sort(ch); // 对字符数组进行排序,筛选出ASCII值的字符
		System.out.println(Arrays.toString(ch));
		char charMax[] = new char[t]; // 将ASCII最大的t个字符存到chMax数组中
		for (int i = 0; i < t; i++) {
			charMax[i] = ch[str.length() - 1 - i];
		}
		System.out.println(Arrays.toString(charMax));

		char strChar[] = str.toCharArray();
		ArrayList<Character> list = new ArrayList<Character>();
		for (int i = 0; i < strChar.length; i++) {
			list.add(strChar[i]);
		}
		boolean flag;
		for (int i = 0; i < str.length(); i++) {
			flag = true;
			for (int j = 0; j < t; j++) {
				if (list.get(i).equals(charMax[j])) {
					flag = false;
				}
			}
			if (flag) {
				System.out.print(list.get(i) + "");
			}
		}
	}

}

九、试题I

问题描述

  给定一个序列 a_1, a_2, ..., a_n。其中 a_1 < a_2 < ... < a_n。
  相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。
  请问序列中最大的间隙值是多少?

输入格式

  输入的第一行包含一个整数 n,表示序列的长度。
  第二行包含 n 个正整数,为给定的序列。

输出格式

  输出一个整数,表示序列中最大的间隙值。

样例输入

5
1 3 8 9 12

样例输出

5

样例说明

  a_3 - a_2 = 5。

数据规模和约定

  对于所有评测用例,1 <= n <= 1000,1 <= a_i <= 100000。

解法一:单层for循环

【解析】:单层for循环遍历数组一次即可!

package simulationMatch_12_2021_1;

import java.util.Scanner;

public class _09I {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int arr[] = new int[n + 5];
		for (int i = 0; i < n; i++) {
			arr[i] = sc.nextInt();
		}
		if (n == 1) {
			System.out.println(arr[0]);
		} else {
			int max = arr[1] - arr[0];
			for (int i = 0; i < n - 1; i++) {
				// System.out.println(arr[i + 1] + "-" + arr[i]);
				if (max < arr[i + 1] - arr[i]) {
					max = arr[i + 1] - arr[i];
				}
			}
			System.out.println(max);
		}
	}

}

十、试题J

问题描述

  小蓝有黄绿蓝三种颜色的小球,分别为 R, G, B 个。同样颜色的小球没有区别。
  小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为 t_1,将接下来的连续小球个数记为 t_2,以此类推直到最右边的小球。
  请问,总共有多少总摆放小球的方案,使得 t_1, t_2, ... 为严格单调递增序列,即 t_1 < t_2 < t_3 < ...

输入格式

  输入一行包含三个整数 R, G, B。

输出格式

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

样例输入

3 6 0

样例输出

3

样例说明

  用 r 表示红球,g 表示绿球,可能的方案包括:
  rrrgggggg
  grrrggggg
  ggrrrgggg

样例输入

2 4 6

样例输出

3

样例说明

  用 r 表示红球,g 表示绿球,b 表示蓝球,可能的方案包括:
  rrggggbbbbbb
  grrgggbbbbbb
  brrggggbbbbb

数据规模和约定

  对于30%的评测用例,1 <= R, G, B <= 10;
  对于60%的评测用例,1 <= R, G, B <= 30;
  对于所有评测用例,1 <= R, G, B <= 50。

解法一:【不会写!求巨佬支招!】

难,不会写...   求大佬支招...

小结

仔细,认真,加油!!!注意变量的上下界!!!

猜你喜欢

转载自blog.csdn.net/weixin_44949135/article/details/111873706
今日推荐