Java刷题-蓝桥杯省赛第十一届JavaC组1---3

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);
    }

}

输出结果

2、解密

题目

【问题描述】

小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的

字符 Tc。下表给出了字符变换的规则:

例如,将字符串 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);
    }

}

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);
        }
        
        
        
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CLODVEP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值