IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 第十一届蓝桥杯B组Java试题答案 -> 正文阅读

[Java知识库]第十一届蓝桥杯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 的最大公约数。

答案:6765

import java.math.BigInteger;

public class Main {
	public static BigInteger gcd(BigInteger a,BigInteger b) {
		return b.equals(BigInteger.ZERO) ? a : gcd(b, a.mod(b));
	}
	public static void main(String[] args) {
		BigInteger arr[] = new BigInteger[2021];
		arr[1] = arr[2] = BigInteger.ONE;
		for(int i = 3; i <=2020; ++i) {
			arr[i] = arr[i-1].add(arr[i-2]);
		}
		System.out.print(arr[2020].gcd(arr[520]));
	}
}

试题 F: 分类计数

输入一个字符串,请输出这个字符串包含多少个大写字母,多少个小写字母,多少个数字。

【输入格式】
输入一行包含一个字符串。
【输出格式】
输出三行,每行一个整数,分别表示大写字母、小写字母和数字的个数。
【样例输入】
1+a=Aab
【样例输出】
? 1
? 3
? 1?

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String str = s.next();
		char[] arr = str.toCharArray();
		int upper = 0, lower = 0, digit = 0;
		for(int i = 0; i < arr.length; ++i) {
			if(arr[i] >= 'A' && arr[i] <= 'Z') {
				upper++;
			} else if(arr[i] >= 'a' && arr[i] <= 'z'){
				lower++;
			} else if(arr[i] >= '0' && arr[i] <= '9') {
				digit++;
			}
		}
		System.out.print(upper+"\n"+lower+"\n"+digit);
		s.close();
	}
}

试题 G: 八次求和

【问题描述】
给定正整数 n, 求 1^8 + 2^8 + ··· + n^8 mod 123456789 。其中 mod 表示取余。
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行,包含一个整数,表示答案。
【样例输入】
? 2
【样例输出】
? 257
【评测用例规模与约定】
? 对于 20% 的评测用例,1 ≤ n ≤ 20。
? 对于 60% 的评测用例,1 ≤ n ≤ 1000。
? 对于所有评测用例,1 ≤ n ≤ 1000000。

快速幂运算(算乘法的时间复杂度为logn)+模运算

import java.util.Scanner;

public class Main {
	static int mod = 123456789;
	
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		long ans = 0;
		for(long i = 1; i <= n; ++i) {
			ans = (ans+quickPow(i,8))%mod;  //long型的i防止计算时溢出
		}
		System.out.print(ans);
		s.close();
	}
	
	static long quickPow(long a, int b) {
		long ans = 1;
		while(b>0) {
			if((b&1) == 1) {
				ans = (ans*a)%mod;
			}
			a = (a*a)%mod;  //记录位权
			b >>= 1;
		}
		return ans;
	}
}

BigInteger类

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	public static final BigInteger mod = BigInteger.valueOf(123456789);
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		BigInteger sum = BigInteger.ZERO;
		for(int i = 1; i <= n; ++i) {
			BigInteger temp = BigInteger.valueOf(i);
			sum = sum.add(temp.multiply(temp).multiply(temp).multiply(temp)
					.multiply(temp).multiply(temp).multiply(temp).multiply(temp));
		}
		System.out.print(sum.mod(mod));
		s.close();
	}
}

试题 H: 字符串编码

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:35:18  更:2022-02-07 13:35:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:15:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码