24年蓝桥杯java-b组

news2024/11/26 16:47:30

24年蓝桥杯javaB组

蓝桥杯在昨天考完了,结果很不乐观,哎,还是太笨了,脑子确实转的慢;😥

本篇博客中解题思路和代码并不一定完全正确,是我和同学们讨论的解答方法,但并未使用官方题解验证(此时官方题解还未出),笔者只是为各位提供一个思路,仅供参考;

如果各位有更好的方法或者该题解有错误,可以在评论区指出;

先写几道现在知道怎么写的;

文章目录

    • 24年蓝桥杯javaB组
      • A.报数游戏
      • B.类斐波那契循环数
      • C.分布式队列
      • D.食堂
      • E.最优分组

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{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N=scanner.nextInt();//输入表示有N个节点;
        scanner.nextLine();
       int c;
        int []b=new int[N];//表示每个队列的长度,则 b[0]就表示主队列了

        for (int i = 0; i <2000; i++) {//题目中说操作数最大为2000次;
          String  s=scanner.next();
            if(s.equals("add")) {
                c=scanner.nextInt();
                b[0]=b[0]+1;
            }
            if(s.equals("sync")) {
                c=scanner.nextInt();
               b[c]=b[c]+1;
               if(b[c]>b[0]){
                   b[c]=b[0];
               }
            }
            if(s.equals("query")) {
                int[] d = Arrays.copyOf(b, b.length);
                Arrays.sort(d);
                System.out.println(d[0]);
            }
        }
        scanner.close();
    }
}

D.食堂

【题目描述】

image-20240416203533644

image-20240416203559569

【解题思路】

这道题要先想到分桌子而不是分人,而且应该从6人桌开始分,分完六人桌分四人桌,具体全部情况:

思路:先分桌子,桌子一个一个分, 先分6人桌:3+3,4+2,2+2+2,3+2, 4,3; 把桌子全用完
再分4人桌:(4,2+2,3,2);

是不是醍醐灌顶?瞬间就清晰了?这个方法确实不错,而且实在是想不到反例了;

【题解代码】

import java.util.Scanner;

public class 食堂 {
    //思路:先分桌子,桌子一个一个分, 先分6人桌:3+3,4+2,2+2+2,3+2,4,3,2; 把桌子全用完
    // 再分4人桌:4人寝,2*2人寝,用完后3人寝 (4,2+2,3,2);
    //
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int q=scanner.nextInt();
        int []a=new int[q];
        int []a2=new int[q];
        int []a3=new int[q];
        int []a4=new int[q];
        int []b4=new int[q];
        int []b6=new int[q];
  m:      for (int i = 0; i <q ; i++) {
            a2[i]=scanner.nextInt();
            a3[i]=scanner.nextInt();
            a4[i]=scanner.nextInt();
            b4[i]=scanner.nextInt();
            b6[i]=scanner.nextInt();
           for (int j = 0; j <b6[i]; j++) {
                if (a3[i]>=2){
                    a3[i]=a3[i]-2;
                    a[i]=a[i]+6;
                } else if (a4[i]>0&&a2[i]>0) {
                    a4[i]=a4[i]-1;
                    a2[i]=a2[i]-1;
                    a[i]=a[i]+6;
                }else if(a2[i]>=3){
                    a2[i]=a2[i]-3;
                    a[i]=a[i]+6;
                }else if(a3[i]>0&&a2[i]>0){
                    a2[i]=a2[i]-1;
                    a3[i]=a3[i]-1;
                    a[i]=a[i]+5;
                }else if (a4[i]>0){
                    a4[i]=a4[i]-1;
                    a[i]=a[i]+4;
                }else  if(a2[i]>=2){
                    a2[i]=a2[i]-2;
                    a[i]=a[i]+4;
                } else if(a3[i]>0){
                    a3[i]=a3[i]-1;
                    a[i]=a[i]+3;
                }else  if(a2[i]>0) {
                    a2[i] = a2[i] - 1;
                    a[i] = a[i] + 2;
                }
                   else continue m;
            }
            for (int j = 0; j < b4[i]; j++) {
                if(a4[i]>0){
                    a[i]=a[i]+4;
                    a4[i]=a4[i]-1;
                }
               else if(a2[i]>=2){
                    a[i]=a[i]+4;
                    a2[i]=a2[i]-2;
                }
               else if(a3[i]>0){
                    a[i]=a[i]+3;
                    a3[i]=a3[i]-1;
                }else if(a2[i]>0){
                   a[i]=a[i]+2;
                    a2[i]=a2[i]-1;
                }else continue m;
            }
        }
        for (int i = 0; i < q; i++) {
            System.out.println(a[i]);
        }

    }
}

E.最优分组

image-20240416215952915

image-20240416220004187

【解题思路】

这道题和高考数学中大题很像,其实只用模拟就完事了;首先每组K个人,那么一共有N/K个组,遍历K从小到大改变,计算每次的期望,期望算法:感染概率为p,那么没感染概率为(1-p),一个组中,所有人都没感染概率Math.pow((1-p),i);所以一个组中,至少一个人感染的概率是p1=1-Math.pow((1-p),i);所以总期望就知道了p1*N+每个组检查一次(N/k);

这道题有一个小坑,就是当k=1时,代入公式计算会将期望值算大,因为单人一组,并不需要对小组进行二次检查,所以例外:
当k=1时,期望直接就时N;

【题解代码】

import java.util.Scanner;

public class 最优分组 {
    public static void main(String[] args) {
        //满满的高考题既视感有没有,(暴漏年龄了);确实和高考题思路一样
        //将N个宠物分组,每组K只宠物,则分N/K组,K肯定是N的因子;
        Scanner scanner=new Scanner(System.in);
         int N=scanner.nextInt();
         double p=scanner.nextDouble();
         {
         double q=1-p;
         double s=N+1;
         int k=1;
        for (int i = 1; i <=N; i++) {//i设置为k
    if(i==1){s=N;k=1;}//当k=1时,期望直接就时N;
          else if(N%i==0){
                double p1=1-Math.pow(q,i);//每组感染的概率;
                if(p1*N+N/i<s)
                {
                    s=p1*N+N/i;
             k=i;
                }
            }
        }
        System.out.println(k);
    }}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sharding-JDBC笔记1

Sharding-JDBC笔记1 1.分库分表1.1 垂直分库1.2 垂直分表1.3 水平分库1.4 水平分表 2.存在问题2.1 事务一致性2.2 跨节点关联查询2.3 跨节点分页、排序函数2.4 主键避重2.5 公共表 1.分库分表 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题&#xff0c;将原来…

亚马逊云挂机项目,单机600+,详细拆解

一、什么是亚马逊云挂机项目&#xff1f; 此项目有很多种叫法&#xff0c;也有人叫它亚马逊店铺挂机浏览项目。 二、赚钱原理&#xff1f; 新入驻的亚马逊商家往往是没有流量和曝光的&#xff0c;为了让店铺的商品更多的被人看到&#xff0c;花钱在平台直接买流量又不划算&a…

android远程更新下载apk

最近业务有涉及到&#xff0c;奈何是个app代码小白&#xff0c;遂记录一下 一&#xff1a;AndroidManifest.xml文件配置 application标签里面加上 android:networkSecurityConfig"xml/network_config" <!-- app下载更新配置--> <uses-permission andr…

国内主流的盗版软件检测工具有哪些?盗版软件检测工具推荐

在当前数字化时代&#xff0c;企业面临着越来越多的挑战&#xff0c;其中之一就是如何防止员工私自安装使用盗版软件。盗版软件不仅侵犯了知识产权&#xff0c;还可能给企业带来诸多风险如安全隐患、法律纠纷和财务损失。因此&#xff0c;企业需要采取一系列措施来防范员工私自…

Qt实现XYModem协议(六)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

分布式系统的监控基础架构Dapper

文章目录 基本设计目标监控系统设计基本要求三个基本设计目标 Dapper监控系统简介三个基本概念区间Helper.Call的详细信息监控信息的汇总监控数据汇总单独进行的原因 关键性技术轻量级核心功能库二次抽样技术 常用Dapper工具Dapper存储API 基本设计目标 监控系统设计基本要求 …

力扣(leetcode) 42. 接雨水 (带你逐步思考)

力扣(leetcode) 42. 接雨水 &#xff08;带你逐步思考&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/ 难度&#xff1a;hard 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多…

「GO基础」在Windows上配置VS Code GO语言开发环境

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【数据结构(八)上】二叉树经典习题

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构的知识 目录 1.前言2.经典习题2.1相同的树2.2另一棵子树2.3翻转二叉树2.4平衡二叉树2.5对…

安宝特方案 | AR工业解决方案系列-工厂督查

在工业4.0时代&#xff0c;增强现实&#xff08;AR&#xff09;技术正全面重塑传统工业生产&#xff0c;在工厂监督领域&#xff0c;其应用不仅大幅提升了生产效率、监测准确性和规范执行程度&#xff0c;而且为整体生产力带来了质的飞跃。 01 传统挑战与痛点 在制造业生产流程…

机器视觉系统:磁瓦尺寸瑕疵缺陷检测的精准“裁判”(官网)

在电子、通讯和汽车行业中&#xff0c;磁瓦作为关键组件&#xff0c;其尺寸精度和表面质量至关重要。然而&#xff0c;在生产过程中&#xff0c;由于各种因素的影响&#xff0c;磁瓦可能会出现尺寸上的瑕疵和缺陷&#xff0c;如尺寸不符、厚度不均、边缘破损等。这些缺陷不仅影…

浅析STM32H750启动文件

目录 概述 1 启动文件介绍 1.1 启动文件功能 1.2 汇编语言指令 2 启动代码细节 2.1 分配栈空间 2.2 分配堆空间 2.3 中断向量表 2.4 复位程序 2.5 中断服务程序 2.5.1 CPU内部中断程序 2.5.2 CPU内部扩展中断程序 2.6 用户堆栈初始化 3 总结 概述 本文以startup_stm3…

GreatSQL 死锁案例分析

1.背景概述 客户业务发生死锁的报错&#xff0c;根据业务程序日志及业务流程&#xff0c;发现造成死锁的原因是&#xff1a;事务1 delete insert &#xff0c;事务2 delete insert 2个事务交替执行导致的死锁&#xff1b;由于GAP锁阻塞了插入意向锁&#xff0c;并且当delete…

基于1-wire总线的多路温度监测系统

前言 在现代工业生产和环境监测中&#xff0c;温度是一个关键的参数&#xff0c;它直接影响到生产过程的稳定性和产品质量。为了确保温度控制在安全和有效的范围内&#xff0c;需要一种可靠且高效的多路温度监测系统。随着微电子技术和传感器技术的发展&#xff0c;基于1-Wire…

Redis中的订阅发布(二)

订阅与发布 订阅频道 每当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候&#xff0c;服务器都会将客户端与被订阅的频道 在pubsub_channels字典中进行关联。 根据频道是否已经有其他订阅者&#xff0c;关联操作分为两种情况执行: 1.如果频道已经有其他订阅者&#xff0c…

从零实现诗词GPT大模型:数据集介绍和预处理

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗…

雨润万物生,酒伴谷雨行

谷雨&#xff0c;是中国传统二十四节气之一 标志着中国农历的春季即将结束&#xff0c;夏季即将来临。在古代中国, 谷雨时节是农民开始播种、收获的时节,也是酿酒的好季节。谷雨时节,气温适宜、湿度较高&#xff0c;是酵母繁殖和发酵的好时候。 谷雨时节酿酒不仅仅是普通人们…

37-2 Python 的 requests 库发送 POST 请求

准备 sqlilabs 靶场: 构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、发送 POST 请求 首先使用bp对 sqlilabs 靶场的第12关抓个包,了解这个关卡是如何发包的 打开靶场:本地ip+ /sqli-labs-master/Less-12/ 先随便输入个账号登录如…

Postman之页面简介 V9.31.0

Postman之页面简介 V9.31.0 一、顶部栏二、左部栏三、中部栏四、下部栏 一、顶部栏 &#xff08;1&#xff09;new选项框&#xff0c;生成新建请求、集合、环境等 &#xff08;2&#xff09;import选项框&#xff0c;可以导入文件、文件夹、链接、文本信息等 &#xff08;3&…

(2022级)成都工业学院数据库原理及应用实验四: SQL简单查询

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、成品仅提供参考 3、如果成品不满足你的要求&#xff0c;请寻求其他的途径 运行环境 window11家庭版 Navicat Premium 16 Mysql 8.0.36 实验要求 在实验三的基础上完成下列查询&#xff1a; 1、查询所有…