洛谷 [语言月赛 202503] 题解(C++)

本文为洛谷3月的语言月赛题目全部题解,难度为入门到普及-, 觉的有帮助或者写的不错的可以点个赞

题目链接为
题目列表 - 洛谷 | 计算机科学教育新生态

目录

题目A:长方形

解题思路:

代码(C++):

题目B:水流

题目大意:

解题思路:

代码(C++):

题目C:格式转换器

题目大意:

代码(C++):

题目D:环形游走

题目大意:

解题思路:

代码(C++):

题目E:

题目大意:

解题思路:

代码(C++):

题目F:数字棋盘

题目大意:

解题思路:

代码(C++):

题目G:洗牌

题目大意:

解题思路:

代码(C++):

题目H:模拟 + 自定义排序

题目大意:

解题思路:

代码(C++):


题目A:长方形

B4243 [语言月 赛 202503] 长方形 - 洛谷

解题思路:

根据题目意思先算出宽B,然后算出周长L即可

代码(C++):

#include <bits/stdc++.h>int main() {int a, S;std::cin >> a >> S;int b = S / a;int L = 2 * (a + b);std::cout << L;
}

题目B:水流

B4244 [语言月赛 202503] 水流 - 洛谷

题目大意:

中间有一个隔板,左右都是水,左边水面高a,右边的水面高b,现在把挡板的高度降低到c,

请问水会向哪个方向移动?或者不移动

解题思路:

关键点:水面存在差别并且挡板高度小于高的那一个水面的时候,水会从高处移到低处

具体可以看代码的判断

代码(C++):

#include <bits/stdc++.h>int main() {int a, b, c;std::cin >> a >> b >> c;if (a > b && c < a) {std::cout << "LeftToRight";} else if (a < b && c < b) {std::cout << "RightToLeft";} else {std::cout << "None";}
}

题目C:格式转换器

B4245 [语言月赛 202503] 格式转换器 - 洛谷

题目大意:

输入一行排数字,然后用逗号隔开然后输出

不是最后一个数字就输出逗号即可

代码(C++):

#include <bits/stdc++.h>int main() {int n;std::cin >> n;for (int i = 0; i < n; i++) {int a;std::cin >> a;std::cout << a;if (i != n - 1) {std::cout << ",";}}
}

题目D:环形游走

B4246 [语言月赛 202503] 环形游走 - 洛谷

题目大意:

给出一个长度为n的环形数组,开始在下标0处,然后从逆时针方向走m次,每次走的步数为当前的数组位置的元素大小,问走完m次后,在哪里

解题思路:

模拟就行,定义一个变量pos表示当前位置,然后每次移动,让pos = pos - a[pos]即可

当pos小于0的时候,相当于到达加上n的位置

代码(C++):

#include <bits/stdc++.h>int main() {int n, m;std::cin >> n >> m;std::vector<int> a(n);for (int i = 0; i < n; i++) {std::cin >> a[i];}int pos = 0;while (m--) {pos = pos - a[pos];while (pos < 0) {pos += n;}}std::cout << pos + 1;
}

题目E:

B4247 [语言月赛 202503] 半个哥德巴赫猜想 - 洛谷

题目大意:

定义缪零数为:对于正整数 n,如果存在正整数 m(m≥2)使得 n 是 m2 的倍数,则称 n 是一个缪零数

现在给出一个正整数n,你需要找出一个质数,一个缪零数,相加为n,请问这一共有多少种方案,在这些方案中缪零数和质数的差(大数减小数)的最小值为多少

解题思路:

写出两个check函数,分别检查数字是否是缪零数和质数,然后枚举数字x从2到n / 2,定义y = n - x,也就是x + y = n

分别检查x和y是否满足题目条件,如果满足就让方案数目增加,更新答案

具体看代码

代码(C++):

#include <bits/stdc++.h>int main() {int n;std::cin >> n;auto check1 = [](int x) -> bool {for (int i = 2; i <= std::sqrt(x); i++) {if (x % (i * i) == 0) {return true;}}return false;};auto check2 = [](int x) -> bool {for (int i = 2; i <= std::sqrt(x); i++) {if (x % i == 0) {return false;}}return true;};int cnt = 0, ans = INT_MAX;for (int x = 2; x <= n / 2; x++) {int y = n - x;if (check1(x) && check2(y) || check1(y) && check2(x)) {cnt++;ans = std::min(ans, abs(x - y));}}std::cout << cnt << "\n" << ans;
}

题目F:数字棋盘

B4248 [语言月赛 202503] 数字棋盘 - 洛谷

题目大意:

给你一个n * m的矩阵,然后再给你两个数字x, y

你需要找出在这个矩阵中等于x且此处相邻位置有y的个数

相邻位置的定义是上下左右

比如对于如下矩阵:

对于此矩阵x = 1, y = 2的结果为3

解题思路:

按题目条件模拟就行,遍历矩阵,然后找到等于x 的值,然后对于这个位置找上下左右是否有y,注意边界处理即可,具体过程可以参考代码

代码(C++):

#include <bits/stdc++.h>int main() {int n, m;std::cin >> n >> m;std::vector<std::vector<int>> a(n, std::vector<int> (m));for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {std::cin >> a[i][j];}}int x, y;std::cin >> x >> y;int ans = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (a[i][j] == x) {if (i < n - 1 && a[i + 1][j] == y) {ans++;} else if (i > 0 && a[i - 1][j] == y) {ans++;} else if (j < m - 1 && a[i][j + 1] == y) {ans++;} else if (j > 0 && a[i][j - 1] == y) {ans++;}}}}std::cout << ans;
}

题目G:洗牌

B4249 [语言月赛 202503] 洗牌 - 洛谷

题目大意:

给你两个字符串,第一个字符串为牌的名字,用逗号隔开

保证牌的个数为偶数,先把牌分成两堆

第二个字符串是为洗牌方式,L表示从左边牌堆中取一张,R表示从右边牌堆中取一张

洗完牌后,输出奇数号的牌

解题思路:

首先就是我们先要处理给出的由逗号分开的字符串

然后把牌分成两堆,用两个数组储存两堆牌的内容

再然后就是洗牌,用ans数组储存得出来的牌,然后用双指针模拟洗牌

得出最后的结果,输出偶数下标的即可(数组是从0开始)

模拟题,具体看代码

代码(C++):

#include <bits/stdc++.h>int main() {int n;std::cin >> n;std::string s, t;std::cin.ignore();std::getline(std::cin, s);std::cin >> t;std::vector<std::string> a;std::string cur = "";for (int i = 0; i < s.size(); i++) {if (s[i] == ',') {a.push_back(cur);cur = "";} else {cur += s[i];}}a.push_back(cur);std::vector<std::string> l, r, ans;for (int i = 0; i < 2 * n; i++) {if (i < n) {l.push_back(a[i]);} else {r.push_back(a[i]);}}int i = 0, j = 0;for (char& c : t) {if (c == 'L') {ans.push_back(l[i]);i++;} else {ans.push_back(r[j]);j++;}}std::reverse(ans.begin(), ans.end());for (int i = 0; i < ans.size(); i++) {if (i % 2 == 0) {std::cout << ans[i] << "\n";}}}

题目H:模拟 + 自定义排序

B4250 [语言月赛 202503] 蛋挞制作工坊 - 洛谷

题目大意:

制作一个蛋挞需要m种材料,每一种材料需要gi数量

现在有n个孩子,分别带了每个材料

然后每个孩子都根据自己的材料数量制作尽可能多数量的蛋挞

然后都混合在一起发放给孩子,根据以下规则发放给孩子:

问题是指定材料为1..2..3到m的时候,分别的分发顺序为多少

解题思路:

首先的问题,就是尽可能多的数量的蛋挞,如何求出每个孩子生产的蛋挞数量呢?

既然每个蛋挞都需要每种材料,确定的数量才能制作,那么可以

对于每种材料,用孩子有的材料 / 需要的材料,取最小值,即为可以这个孩子生产的数量cnt

然后的问题,就是每个孩子每个材料剩下的量,可以用原来的材料的量减去需要的量 / cnt

最后就是自定义排序的环节,根据题目意思写自定义排序即可

为了方便计算和存储,可以用结构体

模拟题,具体写法看代码

代码(C++):

#include <bits/stdc++.h>struct T{int count;std::vector<int> left;int index;
};int main() {int n, m;std::cin >> n >> m;std::vector<T> a(n);std::vector<int> g(m);for (int i = 0; i < m; i++) {std::cin >> g[i];}for (int i = 0; i < n; i++) {int cnt = INT_MAX;std::vector<int> cur(m);for (int j = 0; j < m; j++) {int v;std::cin >> v;cur[j] = v;cnt = std::min(cnt, v / g[j]);}a[i].index = i + 1;a[i].count = cnt;for (int j = 0; j < m; j++) {cur[j] = cur[j] - g[j] * cnt;}a[i].left = cur;}for (int i = 0; i < m; i++) {std::sort(a.begin(), a.end(), [&](auto u, auto v) {if (u.left[i] == v.left[i]) {if (u.count == v.count) {return u.index < v.index;}return u.count > v.count;}return u.left[i] < v.left[i];});for (auto& x : a) {std::cout << x.index << " ";}std::cout << "\n";}}

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

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

相关文章

算法每日一练 (15)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 算法每日一练 (15)第 N 个泰波那契数题目描述解题思路…

实验11 机器学习-贝叶斯分类器

实验11 机器学习-贝叶斯分类器 一、实验目的 &#xff08;1&#xff09;理解并熟悉贝叶斯分类器的思想和原理&#xff1b; &#xff08;2&#xff09;熟悉贝叶斯分类器的数学推导过程&#xff1b; &#xff08;3&#xff09;能运用贝叶斯分类器解决实际问题并体会算法的效果&a…

Matrix-breakout-2-morpheus靶机实战攻略

1.安装并开启靶机 2.获取靶机IP 3.浏览器访问靶机 4.扫描敏感目录文件和端口 gobuster dir -u http://192.168.52.135 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html 5.访问文件和端口 发现在graffiti.php输入框输入内容后页面会返回内容…

【知识】Graph Sparsification、Graph Coarsening、Graph Condensation的详细介绍和对比

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 1. 理论基础&#xff08;Definitions & Theoretical Background&#xff09; 2. 算法方法&#xff08;Techniques & Algorithms&#x…

Java单元测试、Junit、断言、单元测试常见注解、单元测试Maven依赖范围、Maven常见问题解决方法

一. 测试 1. 测试&#xff1a;是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程 2. 阶段划分&#xff1a;单元测试、集成测试、系统测试、验收测试。 ① 单元测试&#xff1a;对软件的基本组成单位进行测试&#xff0c;最小测试单位&#xff1b;目的检验软件基本组…

【Notepad】Notepad优化笔记AutoHotkey语法高亮\设置替换默认的notepad程序\设置主题\增加返回上一个编辑地方插件

Npp使用优化笔记 AHK或自定义语法高亮设置替换系统默认的notepad设置主题返回上一次编辑的地方插件使用 AHK或自定义语法高亮 具体参考该论坛 https://www.autohotkey.com/boards/viewtopic.php?t50 设置替换默认的notepad程序 参考文章&#xff1a; https://www.winhelpo…

Mac:Maven 下载+安装+环境配置(详细讲解)

&#x1f4cc; 下载 Maven 下载地址&#xff1a;https://maven.apache.org/download.cgi &#x1f4cc; 无需安装 Apache官网下载 Maven 压缩包&#xff0c;无需安装&#xff0c;下载解压后放到自己指定目录下即可。 按我自己的习惯&#xff0c;我会在用户 jane 目录下新建…

[K!nd4SUS 2025] Crypto

最后一个把周末的补完。这个今天问了小鸡块神终于把一个补上&#xff0c;完成5/6&#xff0c;最后一个网站也上不去不弄了。 Matrices Matrices Matrices 这个是不是叫LWE呀&#xff0c;名词忘了&#xff0c;但意思还是知道。 b a*s e 这里的e是高斯分成&#xff0c;用1000…

学习threejs,构建THREE.ParametricGeometry参数化函数生成几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.ParametricGeometry1…

Canal 解析与 Spring Boot 整合实战

一、Canal 简介 1.1 Canal 是什么&#xff1f; Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析&#xff08;Binlog&#xff09;中间件&#xff0c;它模拟 MySQL 的从机&#xff08;Slave&#xff09;行为&#xff0c;监听 MySQL 主机的二进制日志&#xff08;Binl…

【海螺AI视频】蓝耘智算 | AI视频新浪潮:蓝耘MaaS与海螺AI视频创作体验

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

Prometheus使用

介绍&#xff1a;Prometheus 是一个开源的 监控与告警系统&#xff0c;主要用于采集和存储时间序列数据&#xff08;Time Series Data&#xff09; Prometheus的自定义查询语言PromQL Metric类型 为了能够帮助用户理解和区分这些不同监控指标之间的差异&#xff0c;Prometheu…

Linux 文件操作-标准IO函数3- fread读取、fwrite写入、 fprintf向文件写入格式化数据、fscanf逐行读取格式化数据的验证

目录 1. fread 从文件中读取数据 1.1 读取次数 每次读取字节数 < 原内容字节数 1.2 读取次数 每次读取字节数 > 原内容字节数 2.fwrite 向文件中写入数据 2.1写入字符串验证 2.2写入结构体验证 3. fprintf 将数据写入到指定文件 4. fscanf 从文件中逐行读取内容…

再学:abi编码 地址类型与底层调用

目录 1.内置全局变量及函数 2.abi 3.地址类型 4.transfer 1.内置全局变量及函数 2.abi data就是abi编码 abi描述&#xff1a;以json格式表明有什么方法 3.地址类型 4.transfer x.transfer:合约转给x call 和 delegatecall 是 Solidity 中用于底层合约调用的函数&#xff0…

解决前端文字超高度有滚动条的情况下padding失效(el-scrollbar)使用

<div class"detailsBlocksContent"><div>测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试…

SpringCloud 学习笔记3(OpenFeign)

OpenFeign 微服务之间的通信方式&#xff0c;通常有两种&#xff1a;RPC 和 HTTP。 简言之&#xff0c;RPC 就是像调用本地方法一样调用远程方法。 在 SpringCloud 中&#xff0c;默认是使用 HTTP 来进行微服务的通信&#xff0c;最常用的实现形式有两种&#xff1a; RestTem…

c中<string.h>

常见错误与最佳实践 缓冲区溢出&#xff1a; strcpy 和 strcat 不检查目标缓冲区大小&#xff0c;需手动确保空间足够。替代方案&#xff1a;使用 strncpy 和 strncat&#xff0c;或动态分配内存&#xff08;如 malloc&#xff09;。 未终止的字符串&#xff1a; 确保字符串以…

C++动态规划从入门到精通

一、动态规划基础概念详解 什么是动态规划 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一种通过将复杂问题分解为重叠子问题&#xff0c;并存储子问题解以避免重复计算的优化算法。它适用于具有以下两个关键性质的问题&#xff1a; 最优子结构&…

TypeScript + Vue:类风格组件如何引领前端新潮流?

&#x1f680; TypeScript Vue&#xff1a;用类风格组件打造“假货比对”神器&#xff01;&#x1f31f; 2025 年&#xff0c;前端开发早已进入“类型安全 模块化”的黄金时代。TypeScript (TS) 的类风格组件正在席卷 Vue 社区&#xff0c;为开发者带来更优雅、更强大的编码体…

Odoo 18 中的列表(list) 、表单(Form)、数据透视表、图表视图、看板视图、活动视图、日历视图等综合应用实例

Odoo 18 中的 视图应用实例 在 Odoo 中&#xff0c;视图是用户界面中表示业务对象的重要组成部分。无论您是扩展现有功能还是创建全新的功能&#xff0c;业务对象都至关重要。这些对象通过不同类型的视图向用户展示&#xff0c;而 Odoo 会根据 XML 描述动态生成这些视图。 列…