1、指数计算
题目
【问题描述】
7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民
走过了 99 年。
请计算:7 ^ 2020 mod 1921,其中 A mod B 表示 A 除以 B 的余数。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路
7的2020次方,取余 ,1921
大数,biginteger方法
代码实现
package 轮1省赛11至13;
import java.math.BigInteger;
public class 第11届题目1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger x = new BigInteger("7");
BigInteger y = new BigInteger("1921");
BigInteger result = x.pow(2020).mod(y);
System.out.println(result);
}
}
输出结果
![](https://img-blog.csdnimg.cn/img_convert/823644c466eeb8c821fe48584cb243d9.png)
2、解密
题目
【问题描述】
小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的
字符 Tc。下表给出了字符变换的规则:
![](https://img-blog.csdnimg.cn/img_convert/e0aa23341886013d6b63bcc1836e8e9b.png)
例如,将字符串 YeRi 加密可得字符串 EaFn。
小明有一个随机的字符串,加密后为
EaFnjISplhFviDhwFbEjRjfIBBkRyY
(由 30 个大小写英文字母组成,不包含换行符),请问原字符串是多少?
(如果你把以上字符串和表格复制到文本文件中,请务必检查复制的内容
是否与文档中的一致。在试题目录下有一个文件 str.txt,第一行为上面的字符
串,后面 52 行依次为表格中的内容。)
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
只包含 30 个大小写英文字母的字符串,在提交答案时只填写这个字符串,填写
多余的内容将无法得分。
解题思路
,,,解密/加密规则是复制的,,
解决,一一对应关系,考虑map字典方法
====输入失败
map方法参考:(12条消息) 第十一届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)_蓝桥杯javac组_红目香薰的博客-CSDN博客
=====考虑通过字符串手动录入
通过下标对应,
代码实现
package 轮1省赛11至13;
public class 第11届题目2 {
public static void main(String[] args) {
String s = "EaFnjISplhFviDhwFbEjRjfIBBkRyY"; // 加密后的字符
char[] arr = s.toCharArray();
String s1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 原字符
String s2 = "yxmdacikntjhqlgoufszpwbrevYXMDACIKNTJHQLGOUFSZPWBREV"; // 加密后的字符
String s3 = ""; // 解密后的字符
for (int i = 0; i < arr.length; i++) {
int j = s2.indexOf(arr[i]); // 输出当前字符在加密后字符中的位置
s3 = s3 + s1.substring(j, j + 1); // 找出原字符在此位置对应的字符
}
System.out.println(s3);
}
}
![](https://img-blog.csdnimg.cn/img_convert/0b00a7bcc8e17d728fdae84736889a60.png)
3、跑步训练
题目
本题总分:10 分
【问题描述】
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循
环。如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案中只填写数,不填写单位。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路
解题步骤:
1.将跑一分钟和休息一分钟当作一个整体即(每两分钟等同于消耗了300点精力)
2.将10000点精力除以300点精力(10000/300=33......100)
3.余数小于300,加上上一步休息的精力依然小于600,无法满足上一步的跑步消耗
4.特殊处理跑到和休息32次的结果,这时候还剩精力400
5.根据每分钟600精力,得出跑步每秒耗费10精力
6.得出花费的时间为(32*2*60)+400/10=3880(秒)
代码实现
package 轮1省赛11至13;
public class 第11届题目3 {
public static void main(String[] args) {
//count用于计算时间 tl用于更新实时的体力值
//初始体力
int num=10000;
//每分钟消耗的体力
int minute=600;
//休息一分钟增加体力
int count=300;
//记录时间
int min=0;
while(num>0){
if(num<600){
break;
}
//跑一分钟体力减少
min++;
num-=minute;
if(num==0){
break;
}
//休息体力增加
min++;
num+=count;
}
if(num==0){
System.out.println(min*60);
}else{
//1000/(600-300)=33.33
int m = num/(600/60);
System.out.println(min*60+m);
}
}
}