2020年第十二届蓝桥杯第一场校模拟赛
作者:互联网
文章目录
以下均为个人想法和解题思路,如有错误或不足,欢迎指正。
试题 A
本题总分:5 分
- 【问题描述】
如果整数 a 是整数 b 的整数倍,则称 b 是 a 的约数。
请问,有多少个正整数是 2020 的约数。
- 【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
个人答案:12
个人代码:
public class _12_XX1_B_试题A {
public static void main(String[] args) {
int res = 0;
for(int i=1; i<=2020; ++i)
if(2020%i==0) ++res;
System.out.println(res);
}
}
解题思路:
试题 B
本题总分:5 分
- 【问题描述】
如果一个 mp3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 mp3 文件?
- 【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
个人答案:25600
个人代码:
public class _12_XX1_B_试题B {
public static void main(String[] args) {
System.out.println(100*1024/4);
}
}
解题思路:
试题 C
本题总分:10 分
- 【问题描述】
一个包含 2020 个结点的无向图,如果图中没有自环和重边,最多包含多少条边?
- 【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
个人答案:2039190
个人代码:
public class _12_XX1_B_试题C{
public static void main(String[] args) {
System.out.println(2019*2020/2);
}
}
解题思路:第一个结点能与剩余2019个结点连2019条边,第二个结点能与剩余2018个结点连2018条边,第三个结点能与剩余2017个结点连2017条边,…,因此结果为(2019+2018+2017+…+2+1)= 2019*(2019+1)/2 = 2019*2020/2
试题 D
本题总分:10 分
- 【问题描述】
整数 1 到 6 连在一起,成为 123456,长度为 6。
整数 1 到 12 连在一起,成为 123456789101112,长度为 15。
请问整数 1 到 2020 连在一起,长度为多少?
- 【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
个人答案:6973
个人代码:
public class _12_XX1_B_试题D {
public static void main(String[] args) {
int res = 0;
for(int i=1; i<=2020; ++i)
res += new String(i+"").length();
System.out.println(res);
}
}
解题思路:
试题 E
本题总分:15 分
- 【问题描述】
在一个序列 a = (a[1], a[2], …, a[n]) 中,如果 (i, j) 满足 i < j 且 a[i] > a[j],则称为一个逆序对。
例如:(3, 2, 2, 1) 中包含 6 个逆序对。(注:题目是网上拿的,不能保证其正确性,这里的6个逆序对应该是不正确的,应该为5个)
请问,(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) 中包含多少个逆序对?
- 【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
个人答案:217
个人代码:
public class _12_XX1_B_试题E {
public static void main(String[] args) {
int[] r = new int[] {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};
int res = 0;
for(int i=0; i<r.length; ++i)
for(int j=i+1; j<r.length; ++j)
if(r[i]>r[j]) ++res;
System.out.println(res);
}
}
解题思路:
试题 F
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分
- 【问题描述】
给定一个三角形的底边长度 l 和高度 h,求三角形的面积。
- 【输入格式】
输入的第一行包含一个整数 l,表示三角形的底边长度。
第二行包含一个整数 h,表示三角形的高。
- 【输出格式】
输出一个数,表示三角形的面积。如果面积为整数,请直接输出这个整数,不带小数点。如果面积不是整数,请四舍五入保留正好一位小数。
- 【样例输入】
5
6
- 【样例输出】
15
- 【样例输入】
5
3
- 【样例输出】
7.5
- 【评测用例规模与约定】
对于所有评测用例,1 <= l, h <= 100。
个人代码:
import java.util.Scanner;
public class _12_XX1_B_试题F {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double res = sc.nextInt()*sc.nextInt()/2.0;
System.out.println(res == (int)(res) ? (int)res : String.format("%.1f", res));
}
}
解题思路:
试题 G
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
- 【问题描述】
小蓝正在上小学,老师要求同学们在暑假每天记日记。
可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。
没想到,日记很快就被老师发现了问题,原来小蓝记完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。
个人代码:
import java.util.Scanner;
public class _12_XX1_B_试题G {
static int[] r = new int[] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public static void main(String[] args) {
if(2021%4==0 && 2021%100!=0 || 2021%400==0) ++r[2];
Scanner sc = new Scanner(System.in);
int m = sc.nextInt(), d = sc.nextInt();
if(r[m]>=d)
System.out.println("yes");
else
System.out.println("no");
}
}
解题思路:
试题 H
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
- 【问题描述】
给定一个单词,请问在单词中删除 t 个字母后,能得到的字典序最小的单词是什么?
- 【输入格式】
输入的第一行包含一个单词,由大写英文字母组成。
第二行包含一个正整数 t。
- 【输出格式】
输出一个单词,表示答案
- 【样例输入】
LANQIAO
3
- 【样例输出】
AIAO
- 【评测用例规模与约定】
对于所有评测用例,单词长度不超过 100,t 小于单词长度。
个人代码:
import java.util.Scanner;
public class _12_XX1_B_试题H {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] ch = sc.next().toCharArray();
int t = sc.nextInt(), n = ch.length-t, si = -1;
for(int i=n; i>0; --i) {
++si;
char ct = 'Z';
for(int j=si; j<ch.length-i+1; ++j) {
if(ch[j] < ct) {
si = j;
ct = ch[j];
}
}
System.out.print(ch[si]);
}
}
}
解题思路:
试题 I
时间限制: 3.0s 内存限制: 512.0MB 本题总分:25 分
- 【问题描述】
给定一个序列 a_1, a_2, …, a_n。其中 a_1 < a_2 < … < a_n。
相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。
请问序列中最大的间隙值是多少?
- 【输入格式】
输入的第一行包含一个整数 n,表示序列的长度。
第二行包含 n 个正整数,为给定的序列。
- 【输出格式】
输出一个整数,表示序列中最大的间隙值。
- 【样例输入】
5
1 3 8 9 12
- 【样例输出】
5
- 【评测用例规模与约定】
对于所有评测用例,1 <= n <= 1000,1 <= a_i <= 100000。
个人代码:
import java.util.Scanner;
public class _12_XX1_B_试题I {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = sc.nextInt(), b, res = 0;
for(int i=1; i<n; ++i) {
b = sc.nextInt();
res = Math.max(res, b-a);
a = b;
}
System.out.println(res);
}
}
解题思路:
试题 J
时间限制: 5.0s 内存限制: 512.0MB 本题总分:25 分
- 【问题描述】
小蓝有黄绿蓝三种颜色的小球,分别为 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。
个人代码:
import java.util.Scanner;
public class _12_XX1_B_试题J {
static int[] r = new int[3];
static int total, res = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
r[0] = sc.nextInt();
r[1] = sc.nextInt();
r[2] = sc.nextInt();
total = r[0]+r[1]+r[2];
dfs(total, 0, -1);
System.out.println(res);
}
public static void dfs(int sum, int x, int last) {
if(sum == 0) {
++res;
return ;
}
for(int i=0; i<3; ++i) {
if(i == last) continue;
for(int j=x+1; j<=r[i]; ++j) {
r[i] -= j;
if(sum>=j)dfs(sum - j, j, i);
r[i] += j;
}
}
}
}
标签:试题,第十二届,int,res,样例,蓝桥,2020,sc,public 来源: https://blog.csdn.net/weixin_45640260/article/details/113358751