最新 2020年 第十一届 蓝桥杯 软件类Java B组 决赛 (国赛) 题目 + 个人答案

 

总体来说,4个小时写10道题,实在有点搞不赢。
以前都是6道,为啥今年突然就10道了啊,时间也不多给点,难搞。
希望时间多给点。

目录

试题 A: 美丽的 2

试题 B: 扩散

试题 C: 阶乘约数

试题 D: 本质上升序列

试题 E: 玩具蛇

试题 F: 蓝肽子序列

试题 G: 皮亚诺曲线距离

试题 H: 画廊

试题 I: 补给

试题 J: 质数行者


试题 A: 美丽的 2

本题总分:5 分

  • 【问题描述】

小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。
他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?

  • 【答案提交】

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

答案:563

代码:

// 试题 A: 美丽的 2
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// long n = sc.nextLong();
		int count = 0;
		for (int i = 1; i <= 2020; ++i) {
			if (2 == i / 1 % 10 || 2 == i / 10 % 10 || 2 == i / 100 % 10
					|| 2 == i / 1000 % 10) {
				System.out.println(i);
				++count;
			}else{
//				System.out.println(i);
			}
		}
		System.out.println(count);

		System.out.println();
	}
}

 


试题 B: 扩散

本题总分:5 分

  • 【问题描述】

小蓝在一张无限大的特殊画布上作画。
这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。
小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。
只有这几个格子上有黑色,其它位置都是白色的。
每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。
请问,经过 2020 分钟后,画布上有多少个格子是黑色的。

  • 【答案提交】

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

答案:20392908

代码:


// 试题 B: 扩散
// 这个就是一道模拟题。
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// long n = sc.nextLong();

		int n = 4000 + 2000 + 4000;

		boolean[][][] arr = new boolean[2][n][n];
		arr[0][4000 + 0][4000 + 0] = true;
		arr[0][4000 + 2020][4000 + 11] = true;
		arr[0][4000 + 11][4000 + 14] = true;
		arr[0][4000 + 2020][4000 + 2020] = true;
		int to = 0;
		for (int k = 0; k < 2020; ++k) {
			int from = k % 2;
			to = (k + 1) % 2;
			for (int i = 0; i < n; ++i) {
				for (int j = 0; j < n; ++j) {
					if (arr[from][i][j]) {
						arr[to][i][j] = true;
						arr[to][i - 1][j] = true;
						arr[to][i][j - 1] = true;
						arr[to][i + 1][j] = true;
						arr[to][i][j + 1] = true;
					}
				}
			}
		}
		int count = 0;
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				if (arr[to][i][j]) {
					++count;
				}
			}
		}
		System.out.println(count);

	}
}

 


试题 C: 阶乘约数

本题总分:10 分

  • 【问题描述】

定义阶乘 n! = 1 × 2 × 3 × · · · × n。
请问 100! (100 的阶乘)有多少个约数。

  • 【答案提交】

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

答案:39001250856960000

代码:


// 试题 C: 阶乘约数
// 找到 100! 的所有因子。所有(因子的个数+1)相乘。
import java.util.*;

public class Main {

	static boolean is_prime(int n) {
		if (2 == n)
			return true;
		for (int i = 2, end = (int) Math.ceil(Math.sqrt(n)); i <= end; ++i) {
			if (0 == n % i) {
				return false;
			}
		}
		return true;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// long n = sc.nextLong();
		int arr[] = new int[100 + 1];

		ArrayList<Integer> primes = new ArrayList<Integer>();

		for (int j = 2; j < 100; ++j) {
			if (is_prime(j)) {
				primes.add(j);
			}
		}
		System.out.println(primes.toString());

		for (int k = 2; k <= 100; ++k) {
			int kk = k;
			for (;;) {
				for (int p : primes) {
					if (0 == kk % p) {
						++arr[p];
						kk = kk / p;
						break;
					}
				}
				if (1 == kk)
					break;
			}
		}

		long count = 1;
		for (int j = 2; j <= 100; ++j) {
			if (0 != arr[j]) {
				System.out.printf("%d:%d\n", j, arr[j]);
				count *= (arr[j] + 1);
			}
		}
		System.out.println(count);

	}
}

 


试题 D: 本质上升序列

本题总分:10 分

  • 【问题描述】

小蓝特别喜欢单调递增的事物。
在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。
例如,在字符串 lanqiao 中,如果取出字符 n 和 q,则 nq 组成一个单调递增子序列。类似的单调递增子序列还有 lnq、i、ano 等等。
小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到 ao,取最后两个字符也可以取到 ao。小蓝认为他们并没有本质不同。
对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个?
例如,对于字符串 lanqiao,本质不同的递增子序列有 21 个。它们分别是 l、a、n、q、i、o、ln、an、lq、aq、nq、ai、lo、ao、no、io、lnq、anq、lno、ano、aio。

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值