第十二届蓝桥杯模拟赛第一期

文章详细解释了五个编程题目,涵盖约数计算、文件存储、图论、数组操作、几何问题、日期逻辑、单词排序和序列分析,体现了解决实际问题的编程技巧。

A填空题

问题描述

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

答案提交

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

参考答案

12

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

B填空题

问题描述

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

答案提交

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

参考答案

25600

//1GB=1024MB

1MB = 1024KB

1KB = 1024字节(byte)

1字节 = 8位(bits)

public class Main {
	public static void main(String[] args) {
		int ans=100*1024/4;
		System.out.println(ans);
	}
}

C填空题

问题描述

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

答案提交

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

参考答案

2039190

public class Main {
	public static void main(String[] args) {
		int ans=2020*(2020-1)/2;
		System.out.println(ans);
	}
}

D填空题

问题描述

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

答案提交

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

参考答案

6973

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

E填空题

问题描述

在一个序列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) 中包含多少个逆序对?

答案提交

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

结果

217

//题目给的例题好像错了,是5对

public class Main {
	public static void main(String[] args) {
		int ans=0;
		int[] a=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};
		for(int i=0;i<=a.length-1;i++) {
			for(int j=0;j<=a.length-1;j++) {
				if(i<j&&a[i]>a[j]) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
}

F编程题

问题描述

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

输入格式

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

输出格式

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

样例输入

5
6

样例输出

15

样例输入

5
3

样例输出

7.5

数据规模和约定

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

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int l=scan.nextInt();
		int h=scan.nextInt();
		int ans=l*h/2;
		if(ans*2==l*h) {
			System.out.println((int)ans);
		}
		else {
			double ll=l;
			double hh=h;
			System.out.printf("%.1f",ll*hh/2);
		}
	}
}

G编程题

问题描述

小蓝正在上小学,老师要求同学们在暑假每天记日记。可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。
没想到,日记很快就被老师发现了问题,原来小蓝记完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.*;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int count=0;
		int year=2021;
		int[] days=new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
		int m=scan.nextInt();
		int d=scan.nextInt();
		if(m<0||m>12) {
			count++;
		}
		if(d>days[m]) {
			count++;
		}
		if(count>0) {
			System.out.println("no");
		}
		else{
			System.out.println("yes");
		}
	}
}

H编程题

问题描述

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

输入格式

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

输出格式

输出一个单词,表示答案

样例输入

LANQIAO
3

样例输出

AIAO

数据规模和约定

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

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		String str=scan.next();
		int t=scan.nextInt();
		int[] a=new int[str.length()];
		for(int i=0;i<str.length();i++) {
			a[i]=str.charAt(i);
			System.out.println(a[i]);
		}
		while(t>0) {
			t--;
			for(int i=0;i<a.length-1;i++) {
				if(a[i]>a[i+1]) {
					a[i]=Integer.MIN_VALUE;
					break;
				}
			}
		}
		for(int i=0;i<a.length;i++) {
			if(a[i]>=0) {
				System.out.print((char)a[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。

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int max=Integer.MIN_VALUE;
		int n=scan.nextInt();
		int[] a=new int[n];
		int[] b=new int[n-1];
		for(int i=0;i<n;i++) {
			a[i]=scan.nextInt();
		}
		for(int i=1;i<n-1;i++) {
			b[i-1]=a[i]-a[i-1];
			max=Math.max(max,b[i-1]);
		}
		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。

import java.util.*;
public class Main {
	static int ans=0;
	static int count=0;
	static int[] a=new int[3];
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		for(int i=0;i<3;i++) {
			a[i]=scan.nextInt();
			count+=a[i];
		}
		dfs(count,0,-1);
		System.out.println(ans);
	}
	public static void dfs(int count,int sum,int color) {
		if(count==0) {
			ans++;
			return;
		}
		for(int i=0;i<3;i++) {
			if(color==i) {
				continue;
			}
			for(int j=sum+1;j<=a[i];j++) {
				a[i]=a[i]-j;
				dfs(count-j,j,i);
				a[i]+=j;
			}
		}
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值