15届蓝桥JavaB组 前6道题解
15届蓝桥JavaB组 前6道题解
- 报数游戏
- 类斐波那契循环数
- 分布式队列
- 食堂
- 最优分组
- 星际旅行
报数游戏

import java.util.Scanner;//分析:
//20和24的最小公倍数是120
//题目给出了前10个数,发现第10个数是120,说明每10个数出现一个公倍数
//第20个数出现 120*2
//第30个数出现 120*3
//...
//第202420242020个数出现 120*20242024202
//第202420242024个数出现 120*20242024202+48
//每10个是一轮 每一轮的数之间相差相同
public class Main {public static void main(String[] args) {long a=20242024202l*120;System.out.println(48+a);}}
类斐波那契循环数

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
//分析:
//从1e7开始从大到小遍历 用check方法来检查是否是目标数
//主要看check方法怎么写 用到了队列来维护n个数的数列public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int test=10000000;for(int i=test;i>=197;i--){//检查i是不是斐波那契循环数if(check(i)){System.out.println(i);return;}}System.out.println(197);scan.close();}//检查n是不是斐波那契环数static boolean check(int n){//记录n的值 int memo=n;//将n从地位开始进栈Stack<Integer> stack=new Stack();while(n!=0){stack.add(n%10);n=n/10;}//队列来维护大小为sz的数列 sz就是几位数Queue<Integer> queue=new LinkedList();int sum=0;//维护队列中sz个元素的总和while(!stack.isEmpty()){int poll=stack.pop();queue.add(poll);sum+=poll;}int sz=queue.size();//几位数while(true){int cur=sum;if(cur>memo){return false;}if(cur==memo){return true;}//太小了 把cur入队列 队列出一个 int poll=queue.poll();sum=sum-poll+cur;queue.add(cur);}}
}
scan.hasNext() 方法的作用是检查输入源中是否还有下一个。
分布式队列

import java.util.LinkedList;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {static LinkedList<Integer>[] arr;public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n=scan.nextInt();arr=new LinkedList[n];//[0,n-1]条队列for(int i=0;i<n;i++) {arr[i]=new LinkedList<Integer>();}while(scan.hasNext()) {String s=scan.next();switch (s) {case "add":int num=scan.nextInt();add(num);break;case "sync":num=scan.nextInt();sync(num);//同步num队列break;case "query":int res=check();//检查队列中最小的个数System.out.println(res);break;}}}private static int check() {// TODO Auto-generated method stubint min=Integer.MAX_VALUE;for(int i=0;i<arr.length;i++) {min=Math.min(min,arr[i].size());}return min;}private static void sync(int num) {// TODO Auto-generated method stubint sz=arr[num].size();if(sz>=arr[0].size()) {return;}int get=arr[0].get(sz);arr[num].add(sz, get);}private static void add( int num) {// TODO Auto-generated method stubarr[0].add(num);}
}
食堂

思路:目的是座位坐得越满越好,首先考虑满座的情况,然后考虑空一座 ,接着空两座,空三座等等。在考虑满座的情况时也要注意顺序! 先选择拼接人数少的。
import java.util.ArrayList;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
//暴力枚举
public class Main {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int t=scan.nextInt();while(t--!=0) {int a2=scan.nextInt();int a3=scan.nextInt();int a4=scan.nextInt();int b4=scan.nextInt();int b6=scan.nextInt();int meet=0;//满座 a4-->b4while(a4>=1&&b4>=1){meet+=4;a4--;b4--;}//满座 a3+a3-->b6while(a3>=2&&b6>=1){meet+=6;a3-=2;b6--;}//满座 a4+a2-->b6while(a4>=1&&a2>=1&&b6>=1){meet+=6;a2--;a4--;b6--;}//满座 a2+a2-->b4while(a2>=2&&b4>=1){meet+=4;a2-=2;b4--;}//满座 a2+a2+a2-->b6while(a2>=3&&b6>=1){meet+=6;a2-=3;b6--;}//空一座 a2+a3-->b6while(a2>=1&&a3>=1&&b6>=1){meet+=5;a2--;a3--;b6--;}//空一座 a3-->b4while(a3>=1&&b4>=1){meet+=3;a3--;b4--;}//空两座 a2+a2-->b6while(a2>=2&&b6>=1){meet+=4;a2-=2;b6--;}//空两座 a4-->b6while(a4>=1&&b6>=1){meet+=4;a4--;b6--;}//空两座 a2-->b4while(a2>=1&&b4>=1){meet+=2;a2--;b4--;}//空三座 a3-->b6while(a3>=1&&b6>=1){meet+=3;a3--;b6--;}//空四座 a2-->b6while(a2>=1&&b6>=1){meet+=2;a2--;b6--;}System.out.println(meet);}scan.close();}}
最优分组

分析:
一共有n只,每个小组k只,所以一共有n/k 个小组
有病毒的概率是p 没有病毒的概率就是1-p
一个小组没有病毒的概率是(1-p)^ k,有病毒的概率是1-(1-p)^k
一共有n/k个小组 我们知道:有毒的小组数量=总小组数量 * 一个小组有毒的概率
这些小组中有病毒的小组有(n/k) * (1-p)^k 个
这些小组中没有病毒的个数是(n/k) * (1-(1-p)^k) 个
测试剂的期望=(n/k) * (1-p)^k + (n/k) * (1-(1-p)^k) * (k+1)
在上面公式中n和p已知的,k在变,所以我们枚举k的取值记录最小值
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n=scan.nextInt();double p=scan.nextDouble();double q=1-p;//没毒的概率int kMax=n;int res=Integer.MAX_VALUE;//记录最小的kdouble memoS=Double.MAX_VALUE;for(int k=1;k<=kMax;k++) {if(n%k!=0) {continue;}int sz=n/k;//小组数量double S=0;if(k==1){//小组一人 S=Math.pow(q, k)*sz+(1-Math.pow(q, k))*(k)*sz;//期望值为S}else{S=Math.pow(q, k)*sz+(1-Math.pow(q, k))*(k+1)*sz;//期望值为S}if(S<memoS) {res=k;memoS=S;}}System.out.println(res);scan.close();}
}
星际旅行

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n=scan.nextInt();//n个星球int m=scan.nextInt();//m个门int q=scan.nextInt();//q个盲盒LinkedList<Integer>[] graph=new LinkedList[n+1];for(int i=0;i<=n;i++) {graph[i]=new LinkedList<>();}//创建无向图for(int i=0;i<m;i++){int a=scan.nextInt();int b=scan.nextInt();graph[a].add(b);graph[b].add(a);}int count=0;//记录可以到达的星球个数for(int i=0;i<q;i++){int x=scan.nextInt();//起点位置int y=scan.nextInt();//最大步数//bfs遍历 从x节点遍历y层遇到的所有节点个数count += bfs(graph,x,y);}double res= count*1.0/q;System.out.printf("%.2f",res);scan.close();}private static int bfs(LinkedList<Integer>[] graph, int start, int steps) {Queue<Integer> queue=new LinkedList<>();int count=0;//数一数入队列的节点(星系)int sz=graph.length;//个数int[]visit=new int[sz];//防止重复计数Arrays.fill(visit, -1);//-1代表没有访问 ,1表示访问了queue.add(start);count++;visit[start]=1;while(!queue.isEmpty()) {int nums=queue.size();if(steps<=0){break;}for(int i=0;i<nums;i++) {int cur=queue.poll();for(int neibor:graph[cur]) {if(visit[neibor]==-1) {//没有访问的星球queue.add(neibor);visit[neibor]=1;count++;}}}steps--;}return count;}
}
相关文章:
15届蓝桥JavaB组 前6道题解
15届蓝桥JavaB组 前6道题解 报数游戏类斐波那契循环数分布式队列食堂最优分组星际旅行 报数游戏 import java.util.Scanner;//分析: //20和24的最小公倍数是120 //题目给出了前10个数,发现第10个数是120,说明每10个数出现一个公倍数 //第20个…...
蓝桥杯 14 天 十五届蓝桥杯 数字诗意
static boolean kkk(long x) {if(x1)return true;else {// 初始化xx为1,用于计算2的幂long xx 1;// 循环60次,检查2的幂是否等于xfor (int i 1; i < 60; i) {xx * 2; // 每次将xx乘以2if (xx x) { // 如果xx等于x,说明x是2的幂…...
MP4音视频格式
1.MP4 MP4是一种用于封装音视频/字幕/图片/章节信息等数据的多媒体容器格式,是MPEG-4系列的成员之一 2.文件结构 MP4由一层层的嵌套Box(atom)组成 [ size (4 bytes) ][ type (4 bytes)][ payload (嵌套box或者数据) ] 3.常见Box 类型名称…...
国内GitHub镜像源全解析:加速访问与替代方案指南
在数字化开发日益普及的今天,GitHub作为全球最大的代码托管平台,已成为开发者不可或缺的资源库。然而,由于网络环境的限制,国内用户在访问GitHub时常常面临速度慢、连接不稳定等问题。为了提升开发效率,国内涌现出多个GitHub镜像源,为开发者提供了快速、稳定的代码克隆与…...
CentOS 7 挂载与卸载文件系统笔记
挂载文件系统 挂载的基本概念 挂载是将存储设备(如硬盘分区、U 盘、光盘等)连接到 Linux 文件系统的特定目录(挂载点),使得系统能够访问存储设备上的数据。 查看已挂载的文件系统 命令:mount 或 df -h mo…...
责任链模式-java
1、spring依赖注入模式 @Configuration public class ChainConfig {@Beanpublic ChainSpringFactory chainSpringFactory(List<IHandler<DemoOne,Boolean>> handlerList){return new ChainSpringFactory(handlerList);}} public class DemoOne { }public abstract…...
Vue3动态加载组件,警告:Vue received a Component than was made a reactive object
场景 2个按钮,点击之后,下面加载不同的组件。 现象 分析 实际动态加载的组件,不是深层响应式的,推荐使用 shallowReactive 或 shallowRef,即浅层作用形式,仅最外层是响应式,以此来提升性能。…...
【源码阅读/Vue Flask前后端】简历数据查询功能
目录 一、Flask后端部分modelServiceroute 二、Vue前端部分index.js main.vue功能界面templatescriptstyle 一般就是三个层面,model层面用来建立数据库的字段,service用来对model进行操作,写一些数据库操作的代码,route就是具体的…...
Vue背景介绍+声明式渲染+数据响应式
一、Vue背景 1. 为什么学Vue 1.前后端开发就业必备技能 2.岗位多,绝⼤互联⽹公司都在使⽤Vue,还可以助⼒SpringBoot、C等项⽬开发 3.提⾼开发效率 更少的时间,干更多的活,提高项目开发速度 原生JS做法 Vue做法 总而言之: 使用Vue能够赋能、提升就业竞争…...
HarmonyOS NEXT 鸿蒙中手写和使用第三方仓库封装Logger打印工具
应用场景 在鸿蒙开发中,我们在很多时候调试代码都需要用到日志打印工具,但无论是hilog还是console.log,都用起来相对麻烦,而且需要手动将对象转换为JSON字符串的方式才能打印,并且在控制台日志中输出的格式也非常丑。所以下面我们…...
如何使用 CSS 的backdrop - filter属性实现背景模糊等特效,有哪些兼容性问题?
大白话如何使用 CSS 的backdrop - filter属性实现背景模糊等特效,有哪些兼容性问题? 嘿,朋友!今天咱们来聊聊 CSS 里超酷的 backdrop-filter 属性,它能让你轻松实现背景模糊等超炫特效。咱们先看看这属性到底是啥&…...
批量合并 PDF 文档,支持合并成单个文档,也支持按文件夹合并 PDF 文档
在日常工作中,合并多个 PDF 文档为一个文件是非常常见的需求。通过合并 PDF,不仅能够更方便地进行管理,还能在特定场景下(如批量打印)提高效率。那么,当我们需要批量合并多个 PDF 文件时,是否有…...
rbpf虚拟机-汇编和反汇编器
文章目录 一、概述二、主要功能三、关键函数解析3.1 汇编器3.1.1 parse -转换为Instruction列表3.1.2 assemble_internal-转换为Insn 3.2 反汇编器3.2.1 to_insn_vec-转换为机器指令 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [rbpf虚拟机-汇编和反汇编器] ❤…...
虚拟现实--->unity学习
前言:这学期劳动课选了虚拟现实,其中老师算挺认真的,当然对一些不感兴趣的同学来说是一种折磨,我对这个unity的学习以及后续的虚幻引擎刚开始连基础的概念都没有,后面渐渐也是滋生了一些兴趣,用这篇博客记录…...
一文详解QT环境搭建:ubuntu20.4安装配置Qt5
随着软件开发技术的不断进步,跨平台应用程序的需求日益增长,开发者们面临着如何在不同操作系统之间保持代码的一致性和效率的问题。Qt作为一个成熟的跨平台C框架,在这方面提供了卓越的支持,不仅简化了GUI应用程序的创建过程&#…...
Gateway实战(三)、断言-时间、Cookie信息
spring cloud-Gateway实战三、断言 断言一)、时间断言相关1、适用场景2、Demo案例二)、断言- Cookie信息1、用户身份验证与会话管理场景及Demo案例2、A/B测试及Demo案例断言 简单了解: 断言是一种在程序设计中用于检查程序状态或条件的机制,在gateway网关里,断言的作用是…...
PyTorch中的Tensor
PyTorch中的Tensor 是核心数据结构,类似于 NumPy 的多维数组,但具备 GPU 加速和自动求导等深度学习特性。 一、基本概念 核心数据结构 Tensor 是存储和操作数据的基础单元,支持标量(0D)、向量(1D&am…...
C++11大数加减
C11大数加减 // 20190412.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include "pch.h" #include <iostream> #include <algorithm> // sort find find_if #include <string> #include <vector> using names…...
OpenGL —— 基于Qt的视频播放器 - ffmpeg硬解码,QOpenGL渲染yuv420p或nv12视频(附源码)
🔔 OpenGL 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 运行效果...
【IDEA的个性化配置】
目录: 一:隐藏项目路径二:禁用斜体注释三:重新Maven构建未完待续... 一:隐藏项目路径 😊在IDEA左侧的Project目录中,项目名称后面显示了项目的文件路径地址,如果不喜欢可以隐藏&…...
Vue 类与样式
数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 style 都是 attribute,我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易…...
【Kafka】分布式消息队列的核心奥秘
文章目录 一、Kafka 的基石概念主题(Topic)分区(Partition)生产者(Producer)消费者(Consumer) 二、Kafka 的架构探秘Broker 集群副本机制 三、Kafka 的卓越特性高…...
自动化发布工具CI/CD实践Jenkins部署与配置教程
1. 前言背景 其实一直想把jenkins 的笔记整理下,介于公司这次升级jenkins2.0 ,根据自己部署的一些经验,我把它整理成笔记。 之前我们的jenkins1.0 时代 还一直停留在 free style 或者 maven 风格的项目,随着项目的日益增多&#x…...
python中的demjson包介绍
demjson是Python中的一个第三方模块库,专门用于编码和解码JSON数据。以下是关于demjson包的详细介绍: 一、主要功能 编码与解码: demjson提供了将Python对象(如字典、列表等)编码成JSON字符串的功能。同时,…...
什么是SQL作业
SQL作业是在数据库服务器上按特定时间或间隔自动执行的计划任务或流程,这些作业由Microsoft SQL Server中的SQL Server代理管理,对于自动执行日常任务(如数据库系统中的备份、数据导入和报告生成)以及确保及时准确地处理和更新数据…...
Android实践开发制作小猴子摘桃小游戏
Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取:Android可能存在版本差异项目如果不能正确运行,可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…...
springboot整合couchbase(集群)
springboot整合couchbase 1、Couchbase1.1、介绍1.2、Bucket1.3、Couchbase SDK 2、(key,value)写入couchbase集群2.1、总体图2.2、依赖2.3、CouchbaseConfig 配置文件2.4、代码使用 1、Couchbase 1.1、介绍 1.2、Bucket 在 Couchbase 中,bucket 是一个重要的概念…...
VsCode启用右括号自动跳过(自动重写) - 自录制gif演示
VsCode启用右括号自动跳过(自动重写) - 自录制gif演示 前言 不知道大家在编程时候的按键习惯是怎样的。输入完左括号后编辑器一般会自动补全右括号,输入完左括号的内容后,是按→跳过右括号还是按)跳过右括号呢? for (int i 0; i < a.s…...
[Linux]在vim中批量注释与批量取消注释
1.在vim中批量注释的步骤: 1.在normal模式下按Ctrl v ,进入V-BLOCK模式 2.按 J 键 或 K 键选择要注释的内容,J向上K向下 我们给第5,6,7行进行注释 3.按住shift i进入插入模式,输入 // 4.点击ESC键&…...
NC,GFS、ICON 数据气象信息可视化--降雨量的实现
随着气象数据的快速发展和应用,气象信息的可视化成为了一项不可或缺的技术手段。它不仅能帮助气象专家快速解读数据,还能为公众提供直观的天气预报信息。今天,我们将从降雨量的可视化出发,带大家一起了解如何实现气象数据的可视化…...
