第十一届蓝桥杯B组Java试题答案

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十一届蓝桥杯B组Java试题答案相关的知识,希望对你有一定的参考价值。

试题 A: 解密

小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的字符 T c 。下表给出了字符变换的规则:

例如,将字符串 YeRi 加密可得字符串 EaFn。小明有一个随机的字符串,加密后为EaFnjISplhFviDhwFbEjRjfIBBkRyY(由 30 个大小写英文字母组成,不包含换行符),请问原字符串是多少?

答案:YeRikGSunlRzgDlvRwYkXkrGWWhXaA

试题 B: 纪念日

2020 年 7 月 1 日是CPC成立 99 周年纪念日。CPC成立于 1921 年 7 月 23 日。
请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包含多少分钟? 

答案:52038720
闰年:24个  平年:75个
(25*366+74*365)*24*60 - 22*24*60 = 52038720

试题 C: 合并检测

答案:10
分析:假设A国有n个人,感染者有n/100,每k个人一组,共n/k组,共用n/k瓶试剂
按照最坏的情况,每多出一个感染者就多用k瓶试剂,因此共用n/k+(n/100)*k瓶试剂
n=10时,n*(1/k+k/100)最小

试题 D: 分配口罩

某市市长获得了若干批口罩,每一批口罩的数目如下:(如果你把以下文字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 mask.txt,内容与下面的文本相同)
9090400
8499400
5926800
8547000
4958200
4422600
5751200
4175600
6309600
5865200
6604400
4635000
10663400
8087200
4554000
现在市长要把口罩分配给市内的 2 所医院。由于物流限制,每一批口罩只能全部分配给其中一家医院。市长希望 2 所医院获得的口罩总数之差越小越好。请你计算这个差最小是多少?

答案:2400

设这些数的和为sum,分为两组后,一组数的和必定<=sum/2,另一组数的和必定>=sum/2。
我们只需要求出这样一组数,它们的和<=sum/2,并且这个和要尽可能最大。
用dp[j]表示一组数的和,这个和<=j,并且在所有情况下最大,这里我们要求dp[sum/2]。

public class Main 
	public static void main(String[] args) 
		int[] nums = 9090400,8499400,5926800,8547000,4958200,4422600,5751200,4175600
			,6309600,5865200,6604400,4635000,10663400,8087200,4554000;
		int sum = 0;
		for(int i = 0; i < nums.length; ++i) 
			sum+=nums[i];
		
		int half_sum = sum/2;
		int[] dp = new int[99990000];
		for(int i = 0; i < nums.length; ++i) 
			for(int j = half_sum; j >= nums[i]; --j) 
				dp[j] = Math.max(dp[j], dp[j-nums[i]]+nums[i]);
			
		
		System.out.print(sum-2*dp[half_sum]);
	

试题 E: 斐波那契数列最大公约数

斐波那契数列满足 F1 = F2 = 1,从 F3 开始有 Fn = Fn−1+Fn−2 。请你计算GCD(F2020 ,F520),其中GCD(A, B) 表示 A 和 B 的最大公约数。

以上是关于第十一届蓝桥杯B组Java试题答案的主要内容,如果未能解决你的问题,请参考以下文章

第十二届蓝桥杯B组试题答案

第十一届蓝桥杯大赛软件类省赛Java研究生组-题解

2021年软件类第十二届蓝桥杯 省赛 python组 A-E题解

第十届蓝桥杯大赛软件类省赛Java研究生组-题解

第十三届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)

2021年软件类第十二届蓝桥杯第二场省赛 python组 A-E题解