电子学会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…...
导致爬虫无法使用的原因有哪些?
随着互联网的普及和发展,爬虫技术也越来越多地被应用到各个领域。然而,在实际使用中,爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因,并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
