2024年第十五届蓝桥杯C/C++B组复盘(持续更新)

在这里插入图片描述
🔥博客主页 小羊失眠啦.
🎥系列专栏《C语言》 《数据结构》 《C++》 《Linux》 《Cpolar》
❤️感谢大家点赞👍收藏⭐评论✍️


在这里插入图片描述

文章目录

  • 试题A:握手问题
    • 问题描述
    • 思路
  • 试题B:小球反弹
    • 问题描述
    • 思路
  • 试题C:好数
    • 问题描述
    • 思路
  • 试题D:R格式
    • 问题描述
    • 思路
  • 试题E:宝石组合
    • 问题描述
    • 思路

试题A:握手问题

问题描述

小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上, 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进 行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但 这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多 少次握手?

注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。

思路

总共有50人参加了会议,其中7个人之间没有握手,但他们与其他43个人都握过手,握手次数为7*43=301次。

另外43个人之间握手的次数可以通过组合公式计算:C(43,2)=903次。

所以,这些人之间一共进行了 301+903=1204次握手。

因此,答案是:1204次。

#include <iostream>
#include <cmath>using namespace std;int countHandshakes(int total, int group) 
{int groupHandshakes = group * (total - group);int otherHandshakes = (total - group) * (total - group - 1) / 2;return groupHandshakes + otherHandshakes;
}int main() 
{int total = 50;int group = 7;int numHandshakes = countHandshakes(total, group);cout << "这些人之间一共进行了 " << numHandshakes << " 次握手" << endl;return 0;
}

试题B:小球反弹

问题描述

有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左 上角顶点有一小球(无视其体积),其初速度如图所示且保持运动速率不变,分 解到长宽两个方向上的速率之比为 dx : dy = 15 : 17。小球碰到长方形的边框时 会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速 率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第 一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍 五入保留两位小数。

在这里插入图片描述

思路

为了计算小球运动的路程,我们需要模拟小球在长方形内的反弹过程,直到它再次回到左上角顶点。由于小球在长宽方向上的速率之比是恒定的(dx : dy = 15 : 17),我们可以将问题分解为两个独立的一维问题,分别处理小球在长和宽方向上的运动。

首先,我们需要确定小球在碰到哪一边之前会先碰到另一边。这可以通过比较小球在两个方向上到达边界所需的时间来实现。一旦小球碰到边界,它就会以相同的角度反弹。我们可以记录每次反弹的位置和方向,直到小球再次回到起始点。

#include <iostream>  
#include <cmath>  
#include <iomanip>  
using namespace std;
struct Point 
{ Point(double x = 0, double y = 0): x(x), y(y) {}double x, y;
};struct Velocity 
{Velocity(double dx = 0, double dy = 0) : dx(dx), dy(dy) {}double dx, dy;
};double calculateDistance(double length, double width, const Velocity& v) 
{double totalDistance = 0;Point position(0, 0); // 初始位置为左上角顶点  Velocity currentVelocity = v;while (true) {// 计算小球在长和宽方向上分别需要多长时间到达边界  double timeToHitX = (length - position.x) / currentVelocity.dx;double timeToHitY = (width - position.y) / currentVelocity.dy;// 根据时间决定小球先碰到哪一边  if (timeToHitX < timeToHitY) {// 碰到长方形的右边  totalDistance += position.x + currentVelocity.dx * timeToHitX;currentVelocity.dx = -currentVelocity.dx; // 反弹  position.x = length - currentVelocity.dx * timeToHitX;}else {// 碰到长方形的下边  totalDistance += position.y + currentVelocity.dy * timeToHitY;currentVelocity.dy = -currentVelocity.dy; // 反弹  position.y = width - currentVelocity.dy * timeToHitY;}// 检查是否回到起始点  if (position.x == 0 && position.y == 0) {break; // 如果回到起始点,退出循环  }}return totalDistance;
}int main() 
{double length = 343720; // 长方形长  double width = 233333;  // 长方形宽  Velocity v(15, 17);    // 小球的速率比  // 计算小球运动的总路程  double totalDistance = calculateDistance(length, width, v);// 输出结果,保留两位小数  cout << fixed << setprecision(2) << totalDistance << endl;return 0;
}

试题C:好数

问题描述

一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 · · · )上 的数字是奇数,偶数位(十位、千位、十万位 · · · )上的数字是偶数,我们就称 之为“好数”。

给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。

输入格式

一个整数 N。

输出格式

一个整数代表答案。

样例输入

24

2024

样例输出

7

150

样例说明

对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个。

评测用例规模与约定

对于 10% 的评测用例,1 ≤ N ≤ 100。

对于 100% 的评测用例,1 ≤ N ≤ 107。

思路

遍历从1到N的所有整数,判断每个整数是否满足好数的条件,如果满足则计数器加1。

条件:定位一个flag在奇数位上为1,在偶数位上为-1,判断奇数位上是否为奇数且flag是否为1或者偶数位上是否为偶数且flag是否为-1

#include <iostream>using namespace std;bool isGoodNumber(int num) 
{int flag = 1;while (num ) {int current = num % 10;if (!((flag == 1 && current % 2) || (flag == -1 && current % 2 == 0))) return false;num /= 10;flag *= -1;}return true;
}int countGoodNumbers(int N) 
{int count = 0;for (int i = 1; i <= N; i++) {if (isGoodNumber(i)) count++;}return count;
}int main() 
{int N = 0;cin >> N;cout << countGoodNumbers(N) << endl;return 0;
}

试题D:R格式

问题描述

小蓝最近在研究一种浮点数的表示方法:R 格式。对于一个大于 0 的浮点 数 d,可以用 R 格式的整数来表示。给定一个转换参数 n,将浮点数转换为 R 格式整数的做法是:

  1. 将浮点数乘以 2的n次方 ;
  2. 四舍五入到最接近的整数。

输入格式

一行输入一个整数 n 和一个浮点数 d,分别表示转换参数,和待转换的浮 点数。

输出格式

输出一行表示答案:d 用 R 格式表示出来的值。

样例输入

2 3.14

样例输出

13

样例说明

在这里插入图片描述

评测用例规模与约定

对于 50% 的评测用例:1 ≤ n ≤ 10,1 ≤ 将 d 视为字符串时的长度 ≤ 15。

对于 100% 的评测用例:1 ≤ n ≤ 1000,1 ≤ 将 d 视为字符串时的长度 ≤ 1024;

保证 d 是小数,即包含小数点。

思路

  1. 首先,我们需要定义一个函数convertToRFormat,该函数接受一个浮点数d和一个整数n作为参数。
  2. 在函数中,我们首先计算转换因子factor,即2的n次方。
  3. 然后,我们将浮点数d乘以转换因子factor,得到一个新的浮点数。
  4. 最后,我们使用四舍五入函数round将新的浮点数四舍五入到最接近的整数,并将结果返回。
#include <iostream>
#include <cmath>using namespace std;long long convertToRFormat(double d, int n) 
{double factor = pow(2, n);long long result = round(d * factor);return result;
}int main() 
{double d = 0.0;int n = 0;cin >> n >> d;long long rFormat = convertToRFormat(d, n);cout << rFormat << endl;return 0;
}

试题E:宝石组合

问题描述

在一个神秘的森林里,住着一个小精灵名叫小蓝。有一天,他偶然发现了 一个隐藏在树洞里的宝藏,里面装满了闪烁着美丽光芒的宝石。这些宝石都有 着不同的颜色和形状,但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗 宝石都有一个与生俱来的特殊能力,可以发出不同强度的闪光。小蓝共找到了 N 枚宝石,第 i 枚宝石的 “闪亮度” 属性值为 Hi,小蓝将会从这 N 枚宝石中选 出三枚进行组合,组合之后的精美程度 S 可以用以下公式来衡量:

在这里插入图片描述

其中 LCM 表示的是最小公倍数函数。

小蓝想要使得三枚宝石组合后的精美程度 S 尽可能的高,请你帮他找出精 美程度最高的方案。如果存在多个方案 S 值相同,优先选择按照 H 值升序排列 后字典序最小的方案。

输入格式

第一行包含一个整数 N 表示宝石个数。

第二行包含 N 个整数表示 N 个宝石的 “闪亮度”。

输出格式

输出一行包含三个整数表示满足条件的三枚宝石的 “闪亮度”。

样例输入

5

1 2 3 4 9

样例输出

1 2 3

评测用例规模与约定

对于 30% 的评测用例:3 ≤ N ≤ 100,1 ≤ Hi ≤ 1000。

对于 60% 的评测用例:3 ≤ N ≤ 2000。

对于 100% 的评测用例:3 ≤ N ≤ 105,1 ≤ Hi ≤ 105。

思路

我们需要找到三枚宝石的组合,使得他们的最小公倍数与各自“闪亮度”属性值的乘积之和最大。此外,如果有多个最大精美程度的方案,我们还需要根据H值的升序排列选择字典序最小的方案。

首先,我们需要实现计算两个数的最小公倍数(LCM)的函数,通常LCM可以通过两数乘积除以它们的最大公约数(GCD)来得到。然后,我们需要遍历所有可能的宝石组合,计算每个组合的精美程度,并跟踪最大的S值以及对应的宝石组合。

#include <iostream>  
#include <vector>  
#include <algorithm>  
using namespace std;// 计算最大公约数  
float gcd(int a, int b) 
{if (b == 0) return a;return gcd(b, a % b);
}// 计算最小公倍数  
float lcm(int a, int b) 
{return a * b / gcd(a, b);
}// 定义一个宝石的结构体  
struct Gem 
{int H; // 闪亮度  int index; // 宝石的索引,用于记录宝石的原始顺序  
};// 自定义比较函数,用于按H值升序排序  
bool compareGems(const Gem& a, const Gem& b) 
{if (a.H == b.H)return a.index < b.index; // 如果H值相同,按索引升序排列  return a.H < b.H;
}// 查找最大精美程度的宝石组合  
vector<int> findMaxBeautyCombination(const vector<int>& gems) 
{int N = gems.size();vector<Gem> gemVec(N);for (int i = 0; i < N; ++i) {gemVec[i].H = gems[i];gemVec[i].index = i;}// 按H值升序排序  sort(gemVec.begin(), gemVec.end(), compareGems);float maxBeauty = 0;vector<int> bestCombination;// 遍历所有可能的宝石组合  for (int i = 0; i < N - 2; ++i) {for (int j = i + 1; j < N - 1; ++j) {for (int k = j + 1; k < N; ++k) {float beauty = (gemVec[i].H * 100 + gemVec[j].H * 10 + gemVec[k].H) * (lcm(lcm(gemVec[i].H, gemVec[j].H), gemVec[k].H) /(lcm(gemVec[i].H, gemVec[j].H) * lcm(gemVec[j].H, gemVec[k].H) * lcm(gemVec[i].H, gemVec[k].H)));if (beauty > maxBeauty) {maxBeauty = beauty;bestCombination = { gemVec[i].H, gemVec[j].H, gemVec[k].H };}}}}return bestCombination;
}int main() 
{int N;cin >> N; // 输入宝石数量  vector<int> gems(N);for (int i = 0; i < N; ++i)cin >> gems[i]; // 输入每颗宝石的闪亮度  // 查找最大精美程度的宝石组合  vector<int> result = findMaxBeautyCombination(gems);// 输出结果  for (int H : result)cout << H << " ";cout << endl;return 0;
}

在这里插入图片描述

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

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

相关文章

一个令人惊艳的图片高清化重绘神器:SUPIR来了!

今天给大家分享一个将模糊图片还原为照片级高清图像的AI项目&#xff1a;SUPIR。这个项目以尖端的大规模人工智能革新图像恢复技术&#xff0c;通过文本驱动、智能修复&#xff0c;将AI技术与创新思维相结合&#xff0c;赋予每张图像全新的生命力。这个项目的修复能力本质上是一…

AI的说服力如人类?Anthropic最新研究揭秘机器的辩论能力|TodayAI

人们常常对人工智能模型在对话中的说服力表现持怀疑态度。长久以来&#xff0c;社会上一直存在一个疑问&#xff1a;人工智能是否会达到人类那样&#xff0c;在对话中具有改变他人想法的能力&#xff1f; 直到最近&#xff0c;这一领域的实证研究相对有限&#xff0c;对于人工…

零基础使用FlexLua打造LoRa无线气体流量计,硬件轻松快速开发。

在工业领域&#xff0c;对气体流量进行准确监测和管理是保障生产安全和提高效率的重要环节。而LoRa&#xff08;长距离低功耗无线技术&#xff09;作为一种适用于远距离、低功耗的通信技术&#xff0c;为无线传感器网络的建设提供了可靠的解决方案。结合气体流量传感技术&#…

畅游网络:构建C++网络爬虫的指南

概述 随着信息时代的来临&#xff0c;网络爬虫技术成为数据采集和网络分析的重要工具。本文旨在探讨如何运用C语言及其强大的cpprestsdk库构建一个高效的网络爬虫&#xff0c;以便捕捉知乎等热点信息。为了应对IP限制的挑战&#xff0c;我们将引入亿牛云爬虫代理服务&#xff…

NPU流式输出-torch_npu和transformers框架-多线程Streamer-昇腾910B-EE1001

前情提要 torch_npu框架不支持多线程自动set_device 报错详情 直接使用transformers的TextIteratorStreamer进行流式推理&#xff0c;会报错 Exception in thread Thread-6: Traceback (most recent call last):File "/root/anaconda3/envs/AI/lib/python3.9/threadin…

《springcloud alibaba》 六 微服务链路跟踪skywalking

目录 准备调整配置接入多个微服务网关项目调整order-seata项目stock-seata项目测试 接入网关微服务 skywalking持续化到mysql自定义链路跟踪pom .xmlorderControllerOrderServiceOrderDaoOrderTblMapper.xml测试 性能剖析日志tid打印pom.xmllogback-spring.xml日志收集启动项目…

OSI七层网络模型 —— 筑梦之路

在信息技术领域&#xff0c;OSI七层模型是一个经典的网络通信框架&#xff0c;它将网络通信分为七个层次&#xff0c;每一层都有其独特的功能和作用。为了帮助记忆这七个层次&#xff0c;有一个巧妙的方法&#xff1a;将每个层次的英文单词首字母组合起来&#xff0c;形成了一句…

TensorFlow-GPU安装

第一步&#xff1a;安装Anaconda、cuda以及对应的cudNN&#xff0c;其中TensorFlow-GPU对应版本如下图所示&#xff1a; 想看最新的话&#xff0c;可以看官方链接&#xff1a;https://www.tensorflow.org/install/source_windows?hlzh-cn 第二步&#xff1a;创建对应的虚拟环…

在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

【面试经典 150 | 数学】直线上最多的点数

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;枚举直线遍历统计方法二&#xff1a;枚举斜率哈希统计 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并…

改进的注意力机制的yolov8和UCMCTrackerDeepSort的多目标跟踪系统

基于yolov8和UCMCTracker/DeepSort的注意力机制多目标跟踪系统 本项目是一个强大的多目标跟踪系统&#xff0c;基于[yolov8]链接和[UCMCTracker/DeepSot]/链接构建。 &#x1f3af; 功能 多目标跟踪&#xff1a;可以实现对视频中的多目标进行跟踪。目标检测&#xff1a;可以实…

在 VS Code 中使用 GitHub Copilot

Code 结合使用。 GitHub Copilot 是什么 GitHub Copilot 是一个可以帮助你更简单、更快速地编写代码的工具&#xff0c;由 GPT-3 提供支持。你只需编写所需代码的描述——例如&#xff0c;编写一个函数来生成一个随机数&#xff0c;或对一个数组进行排序——Copilot 就会为你…

【Docker】docker原理及使用-1

Docker目录 1️⃣概念2️⃣使用容器的好处2️⃣docker和普通软件启动方式的区别2️⃣docker和传统虚拟机的区别 1️⃣下载安装2️⃣安装步骤 1️⃣必须要掌握的核心概念1️⃣命令2️⃣例子2️⃣练习题目2️⃣进入一下python环境(简洁) 1️⃣解释一下 redis1️⃣docker底层隔离机…

L3 【哈工大_操作系统】操作系统启动

本节要点&#xff1a; 1、理解 OS 启动过程发生了什么&#xff0c;理解 OS 与 硬件 与 应用 之间的关系 2、本节讲解了 setup 模块 和 system 模块实现的功能 1、计算机上电时&#xff0c;操作系统在硬盘&#xff08;磁盘&#xff09;上&#xff0c;为了“取指执行”&#xff0…

康姿百德床垫抗干扰设计,保证你和伴侣睡眠不受影响

康姿百德官网价格公开透明&#xff0c;床垫价格合理质量安全可靠 在我们的一生中&#xff0c;睡眠的时间占据我们生活的大部分。在繁忙的一天结束时&#xff0c;没有什么比沉浸在舒适床垫的温柔拥抱中更让人期待的&#xff0c;让您在睡眠过程中释放一整天的疲惫。康姿百德床垫…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

基于Spring Boot的入职匹配推荐系统设计与实现

基于Spring Boot的入职匹配推荐系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 管理员登录界面&#xff0c;登录成功后进入到系统操…

面试经典150题——二叉树的最大深度

1. 题目描述 ​ 2. 题目分析与解析 这个题目有过一定基础的都应该知道&#xff0c;采用递归解决问题&#xff0c;因为要求一个二叉树的深度&#xff08;也就是高度&#xff09;&#xff0c;其实上就是根节点的左子树和右子树中高度最高的那个。因此这个问题就可以拆解为&…

Python爬虫-京东商品评论数据

前言 本文是该专栏的第68篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细介绍京东滑块验证码的解决方法,感兴趣的同学,可以直接翻阅文章《Python如何解决“京东滑块验证码”(5)》进行查看。 而本文,笔者以京东商品详情页的评论数据为例,通过…

悠络客亮相第十届智慧商业数字化运营高峰论坛

2024年4月12日&#xff0c;由中国零售&#xff08;餐饮&#xff09;CIO俱乐部、《智慧零售与餐饮》新媒体主办的“2024第十届智慧商业数字化运营高峰论坛暨中国零售CIO俱乐部春季思享会”在北京举办。 来自全国各地的商超、便利、生鲜、百货、购物中心、快消品、食品/酒水/鞋服…