24年蓝桥杯java-b组

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设置为kif(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.mzph.cn/bicheng/182.shtml

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

相关文章

【python从入门到精通】-- 第五战:函数大总结

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

Leo赠书活动-24期 【三大层次学习企业架构框架TOGAF】文末送书

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

自定义Centos的终端的命令提示符

背景 当我们使用终端登陆Centos时&#xff0c;就自动打开了ssh终端。这个终端的命令提示符一般是这样的&#xff1a; 这个以#号结束的一行字&#xff0c;就是我们说的命令提示符了。 这个是腾讯云的服务器的提示符&#xff0c;可以看到主机名是VM-4-7-centos。 但是这个看起…

MYSQL一条SQL语句的底层执行流程

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小周同志&#xff0c;25届双非校招生Java选手&#xff0c;很高兴认识大家 &#x1f4d5;学习出处&#xff1a;本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇 &#x1f525;如果感觉博主的文章还不错的…

字符串算法习题分析

目录 1 [POI2006]OKR-Periods of Words2 同构字符串3 Camp Schedule 1 [POI2006]OKR-Periods of Words P3435 [POI2006] OKR-Periods of Words - 洛谷 题目描述 定义 Q Q Q 为 A A A 的周期&#xff0c;当且仅当 Q Q Q 是 A A A 的严格前缀&#xff0c;且 A A A 是 Q Q …

STL库 —— priority_queue 的编写

目录 一、 优先级队列的介绍 二、优先级队列的使用 2.1 建大堆 less 2.2 建小堆 greater 2.3 详解 greater 与 less 三、 priority_queue 的模拟实现 3.1 编写框架 3.2 编写简单函数 3.2 进堆 向上调整 3.3 出堆 向下调整 四、完整代码 一、 优先级队列的介绍 1.…

web轮播图

思路&#xff1a; 例如&#xff1a;有5张轮播的图片&#xff0c;每张图片的宽度为1024px、高度为512px.那么轮播的窗口大小就应该为一张图片的尺寸&#xff0c;即为&#xff1a;1024512。之后将这5张图片0px水平相接组成一张宽度为&#xff1a;5120px,高度依然为&#xff1a;5…

守望先锋2怎么在steam上玩 守望先锋归来steam下载安装

守望先锋2怎么在steam上玩 守望先锋归来steam下载安装 《守望先锋2》是知名游戏开发商暴雪娱乐开发的团队射击游戏。与第一部相比&#xff0c;守望先锋2加入了更多元素和新特性。游戏设定在未来的世界&#xff0c;玩家可以选择不同的英雄&#xff08;heroes&#xff09;加入战…

python聊天室

python聊天室 文章目录 python聊天室chat_serverchat_client使用方式1.局域网聊天2.公网聊天 下面是一个简单的示例&#xff0c;包含了chat_client.py和chat_server.py的代码。 chat_server chat_server.py监听指定的端口&#xff0c;并接收来自客户端的消息&#xff0c;并将消…

35岁+技术人的困境与选择

前言 最近一些大厂的持续裁员事件&#xff0c;让职场年龄焦虑的话题又火热起来了。职场的年龄焦虑是客观存在的事实&#xff0c;这是市场与资本相互作用的必然结果。资本在运作的过程中&#xff0c;肯定是要逐利的&#xff0c;最终也是要趋向于利润最大化的。 因此&#xff0…

WdatePicker异常,无法弹出日期选择框

官网&#xff1a;My97日期控件官方网站 My97 DatePickerhttp://www.my97.net/ 可能使版本太老了&#xff0c;可以更新一下&#xff0c;然后根据官方的文件进行使用。 我的异常是因为在网上找的包里面缺少文件&#xff0c;去官网拉了一下最新的就行了。

AR地图导览小程序是怎么开发出来的?

在移动互联网时代&#xff0c;AR技术的发展为地图导览提供了全新的可能性。AR地图导览小程序结合了虚拟现实技术和地图导航功能&#xff0c;为用户提供了更加沉浸式、直观的导览体验。本文将从专业性和思考深度两个方面&#xff0c;探讨AR地图导览小程序的开发方案。 编辑搜图 …

数据结构之排序了如指掌(二)

目录 题外话 正题 选择排序 选择排序思路 选择排序代码详解 选择排序复杂度 双向选择排序 双向选择排序思路 双向选择排序代码详解 堆排序 堆排序思路 堆排序代码详解 堆排序复杂度 冒泡排序 冒泡排序思路 冒泡排序代码详解 冒泡排序复杂度 小结 题外话 今天…

变配电场所智能综合监控系统无人化与自动化升级改造

一 项目背景 国家电力建设飞速发展,为了提高管理水平,智能化建设迫在眉睫。变配电场所作为电网中的核心单元,数量巨大,是智能化建设的中坚部分。但由于变配电场所分布的地理位置过于分散&#xff0c;且配电网的自动化水平有待提高,单纯依靠人力来对变配电场所进行巡视,不仅增加…

python 文件输入输出

python 文件输入输出 一、输入输出1. 输出格式美化2. 旧式字符串格式化3. 读取键盘输入4. 读和写文件5. 文件对象的方法6. pickle 模块 二、文件操作1. File(文件) 方法2. mode 参数有&#xff1a;3. file 对象 三、 OS 文件操作1. OS 文件/目录方法 四、代码概览&#xff08;输…

【canvas】canvas综合运用:心形图案

#简言 利用canvas画出心形图案。 心形 心形图案可以两个椭圆相交组合&#xff0c;也可以直接画路径实现。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" conte…

深入了解CSS 元素尺寸单位:像素、百分比、em、rem 和 viewport 单位

你好&#xff0c;我是小白Coding日志&#xff0c;一个热爱技术的程序员。在这里&#xff0c;我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客&#xff0c;一起在技术的世界里探索前行吧&#xff01; 在前端开发中&am…

labelimg安装和使用(解决闪退问题)

&#x1f308;个人主页&#xff1a;Rookie Maker &#x1f525; 系列专栏&#xff1a;计算机视觉 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到我的代码世界~ &#x1f601; 喜…

图与图搜索算法

图搜索算法是一个非常重要的概念&#xff0c;它是计算机科学中图论和算法设计的基础部分。在开始讨论图搜索算法之前&#xff0c;我们需要先理解什么是图以及图的基本结构。 什么是图&#xff1f; 图&#xff08;Graph&#xff09;是一种非线性数据结构&#xff0c;它由一组点…

C 错误处理

C 语言不提供对错误处理的直接支持&#xff0c;但是作为一种系统编程语言&#xff0c;它以返回值的形式允许您访问底层数据。在发生错误时&#xff0c;大多数的 C 或 UNIX 函数调用返回 1 或 NULL&#xff0c;同时会设置一个错误代码 errno&#xff0c;该错误代码是全局变量&am…