电子学会C/C++编程等级考试2023年05月(三级)真题解析
C/C++等级考试(1~8级)全部真题・点这里
第1题:找和为K的两个元素
在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。
输入
第一行输入序列的长度n和k,用空格分开。 第二行输入序列中的n个整数,用空格分开。
输出
如果存在某两个元素的和为k,则输出yes,否则输出no。
样例输入
9 10
1 2 3 4 5 6 7 8 9
样例输出
yes
以下是一个解决这个问题的C++程序示例:
#include <iostream>
#include <unordered_set>
using namespace std;bool hasPairWithSum(int arr[], int n, int k) {unordered_set<int> complements; // 用于存储已经遍历过的元素for (int i = 0; i < n; i++) {int complement = k - arr[i]; // 计算当前元素的差值(目标和k减去当前元素)if (complements.find(complement) != complements.end()) { // 检查差值是否存在于集合中return true; // 如果存在,则返回true}complements.insert(arr[i]); // 将当前元素插入集合中}return false; // 如果遍历完整个数组都没有找到符合条件的元素,则返回false
}int main() {int n, k;cin >> n >> k;int arr[n];for (int i = 0; i < n; i++) {cin >> arr[i];}if (hasPairWithSum(arr, n, k)) {cout << "yes" << endl;} else {cout << "no" << endl;}return 0;
}
该程序使用了一个无序集合(unordered_set)来存储已经遍历过的元素,然后在遍历过程中检查是否存在与当前元素的差值(即目标和k减去当前元素)相等的元素。如果存在这样的元素,则返回true,否则返回false。最后根据返回值输出"yes"或"no"。
第2题:硬币面值组合
使用1角、2角、5角硬币组成 n 角钱。 设1角、2角、5角的硬币各用了a、b、c个,列出所有可能的a, b, c组合。 输出顺序为:先按c的值从小到大,若c相同则按b的值从小到大。
输入
一个整数n(1 <= n <= 100),代表需要组成的钱的角数。
输出
输出有若干行,每行的形式为: i a b c 第1列i代表当前行数(行数从001开始,固定3个字符宽度,宽度不足3的用0填充),后面3列a, b, c分别代表1角、2角、5角硬币的个数(每个数字固定12个字符宽度,宽度不足的在左边填充空格)。
样例输入
10
样例输出
001 10 0 0
002 8 1 0
003 6 2 0
004 4 3 0
005 2 4 0
006 0 5 0
007 5 0 1
008 3 1 1
009 1 2 1
010 0 0 2
以下是一个解决这个问题的C++程序示例:
#include <iostream>
#include <iomanip>
using namespace std;void printCombination(int n) {int count = 0;for (int c = 0; c <= n / 5; c++) {for (int b = 0; b <= (n - c * 5) / 2; b++) {int a = n - c * 5 - b * 2;cout << setw(3) << setfill('0') << ++count << " ";cout << setw(12) << setfill(' ') << a << " ";cout << setw(12) << setfill(' ') << b << " ";cout << setw(12) << setfill(' ') << c << endl;}}
}int main() {int n;cin >> n;printCombination(n);return 0;
}
该程序使用两个嵌套的循环来遍历所有可能的硬币组合。外层循环控制5角硬币的个数(c),内层循环控制2角硬币的个数(b)。然后,根据已知的总金额n和已确定的5角和2角硬币的个数,计算1角硬币的个数(a)。最后,按照指定的格式输出行号、1角、2角和5角硬币的个数。
第3题:分解因数
给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * … * an,并且1 < a1 <= a2 <= a3 <= … <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (1 < a < 32768)
输出
n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数
样例输入
2
2
20
样例输出
1
4
以下是一个解决这个问题的C++程序示例:
#include <iostream>
using namespace std;int countFactorizations(int n) {int count = 0;for (int i = 1; i <= n; i++) {if (n % i == 0) {count++;}}return count;
}int main() {int n;cin >> n;for (int i = 0; i < n; i++) {int num;cin >> num;cout << countFactorizations(num) << endl;}return 0;
}
该程序使用两个嵌套的循环来计算给定正整数的因子个数。外层循环从1到n遍历所有可能的因子,内层循环检查当前因子是否能整除给定的正整数。如果可以整除,则将计数器增加1。最后,输出计数器的值作为满足要求的分解的种数。程序根据输入的测试数据组数n,循环读取每组测试数据,并输出对应的分解种数。
第4题:苹果消消乐
有100个苹果和香蕉排成一条直线,其中有N个香蕉,你可以使用至多M次魔法道具将香蕉变成苹果,最后“最长的连续苹果数量”即为你本次苹果消消乐的得分,给定苹果和香蕉的排列,求你能获得的最大得分。
提示:这是个枚举题
输入
第一行是一个整数T(1 <= T <= 10),代表测试数据的组数。 每个测试数据第一行是2个整数N和M(0 <= N, M <= 100)。第二行包含N个整数a1, a2, … aN(1 <= a1 < a2 < … < aN <= 100),表示第a1, a2, … aN个位置上摆放的是香蕉。
输出
对于每组数据,输出通过使用魔法道具后你能获得的最大得分。
样例输入
3
5 1
34 77 82 83 84
5 2
10 30 55 56 90
5 10
10 30 55 56 90
样例输出
76
59
100
以下是一个解决这个问题的C++程序示例:
#include <iostream>
#include <vector>
using namespace std;int getMaxScore(vector<int>& fruits, int M) {int maxScore = 0;int n = fruits.size();for (int i = 0; i < n; i++) {int score = 0;int apples = 0;for (int j = i; j < n; j++) {if (fruits[j] - apples <= M) {score++;apples++;} else {break;}}maxScore = max(maxScore, score);}return maxScore;
}int main() {int T;cin >> T;for (int t = 0; t < T; t++) {int N, M;cin >> N >> M;vector<int> fruits(N);for (int i = 0; i < N; i++) {cin >> fruits[i];}int maxScore = getMaxScore(fruits, M);cout << maxScore << endl;}return 0;
}
该程序使用两个嵌套的循环来枚举所有可能的连续苹果序列。外层循环从0到n-1遍历所有可能的起始位置,内层循环从当前起始位置开始,向后遍历直到找到一个位置,使得当前位置的香蕉数量减去已经变成苹果的数量不超过M。在内层循环中,使用一个计数器score来记录当前连续苹果序列的长度,并将其与之前的最大得分maxScore进行比较,更新maxScore。最后,输出maxScore作为最大得分。程序根据输入的测试数据组数T,循环读取每组测试数据,并输出对应的最大得分。
第5题:数列
用以下方式构造数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求数列中第a个数对1000取模的结果是多少。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 <= a <= 1000000)。
输出
n行,每行输出对应一个输入。输出应是一个正整数,为数列中第a个数对1000取模得到的结果。
样例输入
4
5
2
19
1
样例输出
5
1
181
1
以下是一个解决这个问题的C++程序示例:
#include <iostream>
using namespace std;int getModulo(int n) {int a = 1, b = 1;for (int i = 3; i <= n; i++) {int temp = (a + b) % 1000;a = b;b = temp;}return b;
}int main() {int n;cin >> n;for (int i = 0; i < n; i++) {int a;cin >> a;int modulo = getModulo(a);cout << modulo << endl;}return 0;
}
该程序使用一个循环来计算数列中第a个数对1000取模的结果。初始时,将前两个数设为1。然后,从第3个数开始,每个数都等于前面两个数之和,并对1000取模。在循环中,使用两个变量a和b来保存前两个数的值,并使用一个临时变量temp来计算当前数的值。在每次迭代结束后,将a更新为b,b更新为temp。最后,输出b作为第a个数对1000取模的结果。程序根据输入的测试数据组数n,循环读取每组测试数据,并输出对应的结果。
相关文章:

电子学会C/C++编程等级考试2023年05月(三级)真题解析
C/C等级考试(1~8级)全部真题・点这里 第1题:找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。 输入 第一行输入序列的长度n和k,用空格分开。 第二行输入序列中的n个整数&am…...

【2023_10_21_计算机热点知识分享】:机器学习中的神经网络
今天的分享主题是机器学习中的神经网络。神经网络是一种模拟人类神经系统的计算模型,它由一系列的神经元组成,每个神经元接收一组输入,经过计算后产生一个输出。神经网络的学习过程是通过调整神经元之间的连接权重来实现的,这个过…...

app开发者提升第四季度广告收入的方法
第四季度将迎来双十一、双十二、圣诞、元旦为主的电商购物季,这是一年中利用线上消费为全新年度和全新预算做好准备的最佳时机,从过往的变现成功案例中汇总了优化要点,帮助开发者在第四季度和未来一年获取更多广告收益。 https://www.shensh…...

#电子电器架构 —— 车载网关初入门
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数7000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他…...

系统工程利用计算机作为工具
系统工程利用计算机作为工具,对系统的结构、元素、(18)和反馈等进行分析,以达到最优(19)、最优设计、最优管理和最优控制的目的。霍尔(A.D.Hall)于1969年提出了系统方法的三维结构体…...

MathType7.4绿色和谐版数学公式编辑器
MathType 是一个功能强大、所见即所得的数学公式编辑器,可以在 Word、PowerPoint 等办公软件中轻松输入各种复杂的物理公式、化学方程式和符号。由 MathType 创建的公式能与 Office 文档完美结合,显示效果很好;MathType 可在任何支持 OLE 对象…...

JAVA代码审计-纵向越权漏洞分析
查看这个cms系统后台管理员 添加用户的页面 点击添加管理员 这个模块只有管理员拥有,普通用户没有这个模块。 打开源码分析是否存在越权漏洞。 ------------------------------------------------------------------------------------------------------------ …...
【PG】PostgreSQL逻辑备份(pg_dump)
目录 命令格式 连接选项 参数选项 使用举例 pg_dump是用于备份一种PostgreSQL数据库的工具。即使数据库正在被并发使用,它也能创建一致的备份。pg_dump不阻塞其他用户访问数据库(读取或写入)。 pg_dump只备份单个数据库。要备份一个集簇…...

JVM、JRE、JDK
JVM JVM(Java Virtual Machine)是Java虚拟机的缩写,他是Java编程语言运行时环境,负责执行Java字节码。另外作为JVM虚拟机,它在各种操作系统上提供统一的平台,这帮助Java应用程序可以独立于操作系统底层运行…...
Latex 插入矢量图
引用宏包 \usepackage{svg} \begin{figure}[h] \includesvg{filename} \end{figure} 如果插入的 svg 图片文字超出了图形,使用: \usepackage[inkscapelatexfalse]{svg}...
git:删除上一次 commit 中的某个文件,并重新提交
1. 首先,使用以下命令删除要移除的文件: git rm 文件路径将 “文件路径” 替换为要删除的文件的实际路径。这将从 Git 仓库中删除该文件,并将其放入暂存区。git rm 相当于 linux rm git add 命令。 2. 使用以下命令修改上一次的提交&#…...

proxy解决跨域问题
在使用vite工具创建的项目中解决跨域问题: 在vue.config.js中配置如下代码: const { defineConfig } require(‘vue/cli-service’) module.exports defineConfig({ transpileDependencies: true, server:{ proxy:{ ‘/path’:{ target:‘https://i.…...

Ubuntu源码编译samba
概述 本人最近研究samba的源码,但是在源码编译的时候,本以为直接config,make,make install。没想到编译过程中碰到很多麻烦,主要是各种依赖问题。 基于此,本文把samba编译的详细过程记录下来,以供再次研究借鉴。 软件…...

conda虚拟环境配置
命令行输入,conda -V 确定conda版本 创建自己的conda虚拟环境 activate 回车 conda create -n 名字 python版本号 执行命令 确认执行命令 输入y 创建完成 激活环境 conda activate 名字 进入python环境 python 退出 exit() conda deactive...

如何制作自己的数字人
如何制作自己的数字人呢?不用担心平台的使用授权,也不用担心哪一天自己自媒体被号被无故封杀,那么SadTalker将是你的首选,他是完全开源的数字人软件,现已达到Apache2的授权,完全自由的开源软件。作者自己试…...

JAVA毕业设计103—基于Java+Springboot+vue的药店管理系统(源码+数据库)
基于JavaSpringbootvue的药店管理系统(源码数据库) 一、系统介绍 本系统前后端分离 -功能: 登录、药库药品管理、统计查询、药房管理、物资管理、挂号管理、账号管理、角色管理、权限管理、登录日志管理、药品管理、药品类型管理、客人类型管理 二、所用技术 后端技术栈&a…...

LeetCode66——加一
LeetCode66——加一 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例…...

CV计算机视觉每日开源代码Paper with code速览-2023.10.23
精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Zone Evaluation: Revealing Spatial Bias i…...

C语言 sizeof 函数内部进行计算
直接看代码 #include <stdio.h> int main() {int i 2;int j;j sizeof(i i);printf("i %d, j %d", i ,j);return 0; }执行结果: 可以看到 i的值一直是没有变的, j 是int类型下 sizeof占用的大小为 4个字节,不是i的 22…...

导致爬虫无法使用的原因有哪些?
随着互联网的普及和发展,爬虫技术也越来越多地被应用到各个领域。然而,在实际使用中,爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因,并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...