2020年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里
第1题:铺砖
对于一个2行N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。
时间限制:3000
内存限制:131072
输入
整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250
输出
如题
样例输入
2
8
12
100
200
样例输出
3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251
下面是一个使用C语言实现的解决方案,可以计算铺砖的不同方式数量:
#include <stdio.h>#define MAX_N 251typedef long long ll;ll dp[MAX_N];// 动态规划求解铺砖的不同方式数量
void calculate_ways() {dp[0] = 1;dp[1] = 1;dp[2] = 3;for (int i = 3; i < MAX_N; i++) {dp[i] = dp[i-1] + 2 * dp[i-2];}
}int main() {calculate_ways();int N;while (scanf("%d", &N) != EOF) {printf("%lld\n", dp[N]);}return 0;
}
这个实现中,我们使用动态规划的思想来计算铺砖的不同方式数量。首先,我们定义一个全局数组dp,用于存储不同长度走道的铺砖方式数量。然后,我们通过递推关系式dp[i] = dp[i-1] + 2 * dp[i-2]来计算不同长度走道的铺砖方式数量。
在main函数中,我们首先调用calculate_ways函数,计算出所有长度走道的铺砖方式数量。然后,我们循环读取输入的走道长度N,并输出对应的铺砖方式数量dp[N]。
注意:在实际编写和运行代码时,请确保输入数据的格式和范围符合题目要求,并进行必要的错误处理。此外,题目给出的时间限制较短,因此可以采用动态规划预计算的方式,在实际查询时直接输出结果,而不需要每次都重新计算。
第2题:吃糖果2
现有n(50 > n > 0)个糖果,每天只能吃2个或者3个,请计算共有多少种不同的吃法吃完糖果。
时间限制:1000
内存限制:65536
输入
输入的每一行包括一组测试数据,即为糖果数n。最后一行为0,表示测试结束。
输出
每一行输出对应一行输入的结果,即为吃法的数目。
样例输入
1
2
3
4
12
0
样例输出
0
1
1
1
12
下面是一个使用C语言实现的解决方案,可以计算吃糖果的不同吃法数量:
#include <stdio.h>int count_eating_ways(int n) {if (n < 2) {return 0;}int dp[n + 1];dp[0] = 0;dp[1] = 0;dp[2] = 1;dp[3] = 1;for (int i = 4; i <= n; i++) {dp[i] = dp[i - 2] + dp[i - 3];}return dp[n];
}int main() {int n;while (scanf("%d", &n) == 1 && n != 0) {int ways = count_eating_ways(n);printf("%d\n", ways);}return 0;
}
这个实现中,我们定义了一个辅助函数count_eating_ways,用于计算吃糖果的不同吃法数量。在函数中,我们使用动态规划的思想来计算,定义一个数组dp,其中dp[i]表示吃i个糖果的不同吃法数量。初始时,我们将dp[0]和dp[1]设为0,dp[2]和dp[3]设为1。然后,我们通过递推关系式dp[i] = dp[i - 2] + dp[i - 3]来计算吃i个糖果的不同吃法数量。
在main函数中,我们循环读取输入的糖果数量n,并调用count_eating_ways函数计算对应的吃法数量。最后,我们输出吃法数量。
注意:在实际编写和运行代码时,请确保输入数据的格式和范围符合题目要求,并进行必要的错误处理。
第3题:扩号匹配问题
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$“标注,不能匹配的右括号用”?“标注.
时间限制:3000
内存限制:65536
输入
输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100
输出
对每组输出数据,输出两行,第一行包含原始输入字符,第二行由”$“,”?“和空格组成,”$“和”?"表示与之对应的左括号和右括号不能匹配。
样例输入
((ABCD(x)
)(rttyy())sss)(
样例输出
((ABCD(x)
$$
)(rttyy())sss)(
? ?$
下面是一个使用C语言实现的解决方案,可以找到无法匹配的左括号和右括号,并输出标记后的字符串:
#include <stdio.h>
#include <string.h>#define MAX_LENGTH 100void match_parentheses(char* str) {int len = strlen(str);int mismatch[len];memset(mismatch, 0, sizeof(mismatch));int stack[MAX_LENGTH];int top = -1;for (int i = 0; i < len; i++) {if (str[i] == '(') {stack[++top] = i;} else if (str[i] == ')') {if (top == -1) {mismatch[i] = 1;} else {top--;}}}while (top != -1) {mismatch[stack[top--]] = 1;}for (int i = 0; i < len; i++) {if (mismatch[i] == 1) {str[i] = '$';} else if (str[i] == ')') {str[i] = '?';}}
}int main() {char str[MAX_LENGTH];while (fgets(str, MAX_LENGTH, stdin) != NULL) {int len = strlen(str);if (str[len - 1] == '\n') {str[len - 1] = '\0';}match_parentheses(str);printf("%s\n", str);for (int i = 0; i < len; i++) {if (str[i] == '$' || str[i] == '?') {printf("%c", str[i]);} else {printf(" ");}}printf("\n");}return 0;
}
这个实现中,我们定义了一个辅助函数match_parentheses,用于找到无法匹配的左括号和右括号,并将其标记为'$'和'?'。函数中,我们使用一个栈来辅助匹配括号,遍历字符串,当遇到左括号时,将其索引入栈;当遇到右括号时,如果栈为空,则说明没有与之匹配的左括号,将当前右括号标记为无法匹配;否则,将栈顶的左括号出栈,表示匹配成功。最后,将剩余未匹配的左括号标记为无法匹配。
在main函数中,我们循环读取输入的字符串,并调用match_parentheses函数对其进行处理。然后,我们先输出原始字符串,再输出标记后的字符串,其中无法匹配的左括号用'$'表示,无法匹配的右括号用'?'表示。
注意:在实际编写和运行代码时,请确保输入数据的格式和范围符合题目要求,并进行必要的错误处理。
第4题:质数的和与积
两个质数的和是S,它们的积最大是多少?
时间限制:10000
内存限制:65536
输入
一个不大于10000的正整数S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
样例输入
50
样例输出
589
下面是一个使用C语言实现的解决方案,可以找到两个质数的和为给定值S时,它们的最大乘积:
#include <stdio.h>int is_prime(int n) {if (n < 2) {return 0;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return 0;}}return 1;
}int find_max_product(int S) {int max_product = 0;for (int i = 2; i <= S / 2; i++) {if (is_prime(i) && is_prime(S - i)) {int product = i * (S - i);if (product > max_product) {max_product = product;}}}return max_product;
}int main() {int S;scanf("%d", &S);int max_product = find_max_product(S);printf("%d\n", max_product);return 0;
}
这个实现中,我们定义了两个辅助函数。is_prime函数用于判断一个数是否为质数。在函数中,我们首先判断小于2的数不是质数。然后,从2开始遍历到该数的平方根,如果存在能整除该数的因子,说明该数不是质数,否则是质数。
find_max_product函数用于找到两个质数的和为给定值S时,它们的最大乘积。在函数中,我们从2开始遍历到S的一半,对于每个数i,判断它和S - i是否都是质数。如果是质数,则计算它们的乘积,并与当前的最大乘积比较,更新最大乘积。
在main函数中,我们读取输入的S,并调用find_max_product函数找到最大乘积。然后,我们输出最大乘积。
注意:在实际编写和运行代码时,请确保输入数据的格式和范围符合题目要求,并进行必要的错误处理。此外,题目保证有解,因此不需要额外处理无解的情况。
第5题:因子问题
任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。
时间限制:10000
内存限制:65536
输入
包括两个整数N、M。N不超过1,000,000。
输出
输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1
样例输入
35 10
样例输出
5
下面是一个使用C语言实现的解决方案,可以找到满足条件的最小正整数a:
#include <stdio.h>int find_smallest_factor(int N, int M) {for (int a = 1; a <= N; a++) {if (N % a == 0 && (M - a) % N == 0) {return a;}}return -1;
}int main() {int N, M;scanf("%d %d", &N, &M);int smallest_factor = find_smallest_factor(N, M);printf("%d\n", smallest_factor);return 0;
}
这个实现中,我们定义了一个辅助函数find_smallest_factor,用于找到满足条件的最小正整数a。在函数中,我们从1开始遍历到N,对于每个数a,判断是否同时满足两个条件:N能整除a,且(M - a)能整除N。如果满足条件,则返回a作为最小正整数;如果遍历完所有可能的a都不满足条件,则返回-1。
在main函数中,我们读取输入的N和M,并调用find_smallest_factor函数找到最小正整数a。然后,我们输出a。
注意:在实际编写和运行代码时,请确保输入数据的格式和范围符合题目要求,并进行必要的错误处理。
相关文章:
2020年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C编程(1~8级)全部真题・点这里 第1题:铺砖 对于一个2行N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。 时间限制:3000 内存限制:131072 输入 整个测试有多组数据,请做到文件底结束。每行给出…...
30天入门Python(基础篇)——第2天:Python安装(保姆级)与IDE的认识与选择+详细安装教程
文章目录 专栏导读上一节课回顾1、Python解释器的安装查看各个版本的Python解释器①、ok,双击安装②、这里我们选择【自定义】安装, 下面的【将Python添加在环境变量】大家一定要打个勾③、点击【Next】进行下一步④、这里不建议安装在C盘, 点击【Browse】我在F盘创…...
软件测试/测试开发丨ChatGPT:带你进入智能对话的新时代
简介 人工智能时代来临 我们正处于AI的iPhone时刻。——黄仁勋(英伟达CEO) ChatGPT 好得有点可怕了,我们距离危险的强人工智能不远了。——马斯克(Tesla/SpaceX/Twitter CEO) 以上的内容说明我们现在正处于一个技术大…...
logback/log4j基本配置和标签详解
什么是logback logback 继承自 log4j,它建立在有十年工业经验的日志系统之上。它比其它所有的日志系统更快并且更小,包含了许多独特并且有用的特性。 logback.xml 首先直接上配置,我在项目过程中发现一些同时遇到需要logback文件的时候就去…...
雅思 《九分达人》阅读练习(二)
目录 雅思阅读练习 《九分达人》test3 paragraph3 1.单词含义要记准确,敏感度要上来。 2.找准定位,之后理解句子大致含义。 说说关于判断题的做题方法 关于“承认”有哪些单词 同替词汇 think 可以用什么其他单词来替换 单词 一些疑问 I have…...
[论文笔记] Gunrock: A High-Performance Graph Processing Library on the GPU
Gunrock: A High-Performance Graph Processing Library on the GPU Gunrock: GPU 上的高性能图处理库 [Paper] [Code] PPoPP’16 摘要 Gunrock, 针对 GPU 的高层次批量同步图处理系统. 采用了一种新方法抽象 GPU 图分析: 实现了以数据为中心(data-centric)的抽象, 以在结点…...
A Guide to PriorityQueue
原文链接:https://blog.csdn.net/ohwang/article/details/116934308 PriorityQueue 又叫 优先队列 注意1: PriorityQueue是用数组实现,数组大小可以动态增加,容量无限。 优先队列采用的是堆排序(默认为最小堆ÿ…...
Jenkins教程—构建多分支流水线项目
本教程向你展示如何使用Jenkins协调一个用 Node Package Manager (npm) 管理的简单 Node.js 和 React 项目, 并同时 为开发和产品环境交付不同的结果。 在开始本教程之前,建议你前往 教程概览 页面,并至少完成一个 介绍教程, 从而…...
【vxe-table】@enter.keyup.native实现在列表中回车光标向右移动聚焦及vxe-table的一些方法的使用(具体实现+踩坑篇)
需求: vxe-table表格 1、新增的时候,vxe-table第一行的第一个输入框聚焦 2、输入完成后,按回车,自动跳到同一行的下一个输入框 3、当在同一行的最后一个输入框输入完成后,按回车跳回第一个输入框并选中状态且复选框为选…...
科技资讯|苹果Vision Pro获得被动冷却系统及数字表冠控制界面专利
据patentlyapple报道,美国专利商标局正式授予苹果一项与头戴式设备(Apple Vision Pro)相关的专利11751366,该设备可以提供被动冷却系统,利用光学组件的表面来管理热量,而不会对用户显示的视觉信息产生不利影…...
【悬溺】Flyway的纯爱时刻
文章目录 文档背景你好Demo地址Flyway的CPU时刻(工作流程)她在哪Flyway的使用流程官方文档 文档背景 由于维护项目的哥们们技术水平参差不齐,长短不一。故做此篇文章。多点纯爱,这个世界需要纯爱战士! 你好 Flyway是一款开源的数据…...
Linux权限介绍
引言 Linux中有两种用户:超级用户(root)、普通用户 超级用户:在Linux中能做任何事,不受到权限的限制普通用户:会受到权限的限制超级用户的命令提示符是#,普通用户的命令提示符是$ 命令ÿ…...
git:一个本地仓库绑定多个远程的方法以及遇到的问题
绑定方法见知乎大佬:本地Git仓库关联多个远程仓库的两种方法 一般情况下,没人这么搞! 但是公司迁移git仓库阶段,xx云环境上的gitlab要有操作记录,不然影响整体评分,这就不得一个本地仓库关联了原来的仓库新…...
如何将WPS设置为默认的办公软件
很多小伙伴的电脑中有好几种办公软件,每次打开文档表格都要进行选择,有小伙伴想要将WPS设置成默认的办公软件该怎么操作呢,下面小编就给大家详细介绍一下将WPS设置为默认的办公软件的方法,有需要的小伙伴快来和小编一起看一看吧。…...
css 文本溢出隐藏,显示省略号
单行隐藏 overflow:hidden; //超出的文本隐藏text-overflow:ellipsis; //溢出用省略号显示white-space:nowrap; //溢出不换行多行隐藏 overflow:hidden; text-overflow:ellipsis; display:-webkit-box; //将对象作为弹性伸缩盒子模型显示。 -webkit-box-orient:vertical; //从…...
构建普适通用的企业网络安全体系框架
在当今数字化时代,网络安全已成为企业保护信息资产和业务运行的重要任务。恶意攻击、数据泄露、网络病毒等威胁不断演进,给企业和个人带来了巨大风险。为了应对这一挑战,许多企业已经采取了一系列网络安全措施,如制定了网络安全政…...
TinTin Web3 动态精选:以太坊基金会推出 EELS、Arbitrum Stylus 上线
TinTin 快讯由 TinTinLand 开发者技术社区打造,旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位, 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态,将有助于 TinTinLand 社区的开…...
软考高级架构师下篇-14面向服务架构设计理论
目录 1. 引言2. SOA的相关概念3. SOA的发展历史4. SOA的参考架构5. SOA 主要协议和规范6. SOA设计的标准要求7. SOA的作用与设计原则8. SOA的设计模式9. SOA构建与实施10. 前文回顾1. 引言 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸…...
HTTP 和 HTTPS
一.HTTP HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本(Hypertext)和其他资源的应用层协议。HTTP是Web中最常用的协议之一,它使得浏览器可以请求和显示网页,也允许服务器传送网页内容和其…...
linux使用stress命令进行压力测试cpu
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
