当前位置: 首页 > article >正文

蓝桥杯刷题——day7

蓝桥杯刷题——day7

  • 题目一
    • 题干
    • 题目解析
    • 代码
  • 题目二
    • 题干
    • 题目解析
    • 代码

题目一

题干

输入一个整数P,输出P进制下的乘法表。P进制中大于等于 10 的数字用大写字母A、B、C等表示。
示例一:

输入:
4
输出:
1×1=1
2×1=2 2×2=10
3×1=3 3×2=12 3×3=21

示例二:

输入:
8
输出:
1×1=1
2×1=2 2×2=4
3×1=3 3×2=6 3×3=11
4×1=4 4×2=10 4×3=14 4×4=20
5×1=5 5×2=12 5×3=17 5×4=24 5×5=31
6×1=6 6×2=14 6×3=22 6×4=30 6×5=36 6×6=44
7×1=7 7×2=16 7×3=25 7×4=34 7×5=43 7×6=52 7×7=61

题目链接:乘法表

题目解析

这条题目相对来说比较简单,我们在练习for语句循环的时候经常会拿打印乘法口诀表来练手,因此这里注重介绍一下进制转化的问题,例如:对于123456这个数我们如何能一个数一个数的拿出来呢?我们是不是先对123456进行10取余,拿出来6,然后用123456÷10得到12345,然后再用12345对10取余,然后拿出来5,以此类推,进制转化也是这样的,只是把这里的10换成了你想进制转换的进制数而已,但是需要注意的是我们拿的过程中是6,5,4,3,2,1。因此我们可以用头插法的方法每拿到一个数字就把他放到最前面就可以了,当然在拿到每个数之后,要进行判断,是否大于10,如果大于10,就需要把10以后的部分转化为对应的大写字母,下面是完整代码:

代码

import java.util.Scanner;
public class Main {

    // 将数字转换成P进制字符串表示
    private static String toBaseP(int number, int base) {
        if (number == 0) {
            return "0";
        }

        StringBuilder result = new StringBuilder();
        while (number > 0) {
            int remainder = number % base;
            char digit = (char) (remainder < 10 ? '0' + remainder : 'A' + (remainder - 10));
            result.insert(0, digit);
            number /= base;
        }

        return result.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int P = scanner.nextInt();
        printMultiplicationTable(P);
    }

    // 输出P进制的乘法表
    private static void printMultiplicationTable(int P) {
        for (int i = 1; i < P; i++) {  // 遍历行数
            for (int j = 1; j <= i; j++) {  // 每行逐渐增加的内容
                String result = toBaseP(i * j, P);  // 计算结果并转换为P进制
                System.out.print(toBaseP(i, P) + "*" + toBaseP(j, P) + "=" + result + " ");
            }
            System.out.println();
        }
    }
}

题目二

题干

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a 道题目,周六和周日每天做b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于n 题?
输入: 一行包含三个整数a,b,c。
输出: 一个整数代表天数。

输入:
10 20 99
输出:
8

题目链接: 刷题统计

题目解析

这条题目也相对比较简单,我们可以创建一个数组用于记录一周之内累计的做题个数,那么最后一个数组元素表示的就是一周的做题数,我们记为sum,用n/sum就可以得到需要刷题刷几个星期,n%sum就可以得到不足一周做题数的剩余题数,那么直接跟累计做题数进行比较就可以得到在最后一周的哪一天完成了。下面是完整代码:

代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long n = scanner.nextLong();
        int i = 0;
        long[] arr = new long[7];
        arr[0] = a;
        for (i = 1; i < 5; i++) {
            arr[i] = arr[i - 1] + a;
        }
        arr[5] = arr[4] + b;
        arr[6] = arr[5] + b;
        long sum = arr[6];
        long times = n / sum;
        long time = n % sum;
        for (i = 0; i < arr.length; i++) {
            if (time <= arr[i]) {
                break;
            }
        }
        System.out.print(times * 7 + i + 1);
    }
}

今天的题目都不算太难,如果有什么疑问,欢迎各位私信+评论,谢谢各位点赞和收藏。


http://www.kler.cn/a/442753.html

相关文章:

  • 【2025最新计算机毕业设计】基于SpringBoot的体育馆管理系统的设计与实现【提供源码+答辩PPT+文档+项目部署】
  • 第二部分:进阶主题 16 . 高级特性 --[MySQL轻松入门教程]
  • ScrapySharp下载器:配置代理以访问受限网站
  • c#笔记2024
  • 鸿蒙Next状态管理优秀实践
  • JVM的垃圾回收机制
  • Redis应用—5.Redis相关解决方案
  • 测试工程师八股文05|功能测试、业务测试
  • 【Maven】dependencyManagement依赖版本管理
  • 艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型
  • Docker如何运行一个Java的jar包程序
  • ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)
  • 蜂鸟云平台 JavaScript SDK 与微信小程序 SDK v3.1.5 更新分析
  • leetcode236.二叉树的最近公共祖先
  • mysql、postgresql、oceanbase调优
  • 基于深度Q网络(Deep Q-Network,DQN)的机器人路径规划,可以自定义地图,MATLAB代码
  • 小议Redis
  • Vue.js前端框架教程4:Vue响应式变量和指令(Directives)
  • 【UE5 C++课程系列笔记】10——动态单播/多播的基本使用
  • [面试题]--索引用了什么数据结构?有什么特点?