第15届蓝桥杯题解

本文分享了蓝桥杯2024JavaB组的五个题目,包括报数游戏的规律分析、类斐波那契循环数的逆向推导、分布式队列的逻辑设计以及食堂和最优分组问题的解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

24年蓝桥杯javaB组

蓝桥杯在昨天考完了,结果不太乐观,哎,博主脑子转太慢了,很多再想一想可能就有分数了,大家可以来多看一看吧;😥

A.报数游戏

【题目描述】

image-20240414143619364

【题目思路】

这道题先找规律,蓝桥杯前面的题都是有一定规律可循的,或者是一眼就能看出来能暴力解的;

我们能发现20和24的最小公倍数是120,又通过计算知道120里有10个符合条件的数(例如 1200就会有100个符合条件的,2400就会有200个符合条件的),所以就知道每120个数就要加10;若共有202420242024即202420242020+4个,所以排到第(202420242024/10) * 120+48(剩余四个数)= 202420242024*12

【答案】:202420242024*12

B.类斐波那契循环数

【题目描述】image-20240414151449114

【题目思路】

这个题目意思是,对于n位的数字,构成一个数组,数组前n位是数字的各位,后边的每一位都是该数前n位值之和;问:从1到10000000内的数字,形成的数组是否有数等于该数字的值,并取满足要求的最大的数字。🥯

反向推就可以了,因为是一道填空题,并不需于急于一口气做出来答案,先判断最大数,再往前判断;

这里有个小技巧,当数组加到40多位的时候已经完全大于10000000以内的数了。不再需要接着往下遍历,当然可以另外加一个判断:当前数组中的数大于循环的这个数时,直接进入下一个循环;

if(a[i]>k)
continue m;

【题目代码】

import java.util.Scanner;

//10000000
public class demo2 {
   
    public static void main(String[] args) {
   
         int n=10000000;
        String s ;
     m:   for (int k = n; k > 0; k--) {
   
            s = String.valueOf(k);//传入字符
            int b = s.length();//判断传入的数长度是多少
            int[] a = new int[50];//使用数组存s的每一位
            for (int i = 0; i < b; i++) {
   
                a[i] = s.charAt(i) - 48;
            }
            for (int i = b; i < 50; i++) {
   //因为可以经过判断
                int c = 0;
                for (int j = i - b; j < i ; j++) {
    //数字的每一位
                    c = a[j] + c;
                }
                a[i] = c;
                if(a[i]>k)
                    continue m;
                 if(a[i]==k) {
   
                     System.out.println(a[i]);

                 return;
                 }
            }
        }
    }
}

【运行结果】:7913837

C.分布式队列

【题目描述】

image-20240416153014117

image-20240416153549332

image-20240416153713177

【题目思路】

这道题很多人纠结于程序如何结束,题目中并没有详细给出,所以好多人做起来很难受,不知道如何下手,其实没结束那就不结束就好了,每次进行查询操作,都把最新的同步输出去就行了,即程序输入并不需要结束运行,而是做到边输入边输出;

除去这些,这道题其实就是一道描述题,使用代码复述文字描述就可以了;

【题目代码】

import java.util.Arrays;
import java.util.Scanner;
public class Main
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值