2020 年 9 月青少年软编等考 C 语言三级真题解析

目录

  • T1. 因子问题
    • 思路分析
  • T2. 质数的和与积
    • 思路分析
  • T3. 括号匹配问题
    • 思路分析
  • T4. 吃糖果 2
    • 思路分析
  • T5. 铺砖
    • 思路分析

T1. 因子问题

任给两个正整数 n n n m m m,求一个最小的正整数 a a a,使得 a a a ( m − a ) (m-a) (ma) 都是 n n n 的因子。

时间限制:1 s
内存限制:64 MB

  • 输入
    包括两个整数 n n n m m m n n n 不超过 1 0 6 10^6 106
  • 输出
    输出一个整数 a a a,表示结果。如果答案不存在,则输出 -1
  • 样例输入
    35 10
    
  • 样例输出
    5
    

思路分析

此题考查枚举法,难度入门。

常规思路下,我们可以枚举 1 ∼ m / 2 1 \sim m / 2 1m/2 的所有数字,逐一验证是否满足条件,但是题目中并没有给出 m m m 的范围,这给我们带来了不小的障碍。不妨转变思路,枚举 n n n 的所有因子,事实上,由于因子成对出现这一特性,我们只需要枚举 1 ∼ n 1 \sim \sqrt{n} 1n 的所有数字即可,加快枚举效率。

/** Name: T1.cpp* Problem: 因子问题* Author: Teacher Gao.* Date&Time: 2024/11/16 15:06*/#include <iostream>using namespace std;int main()
{int n, m;cin >> n >> m;for (int i = 1; i * i <= n; i++) {if (n % i == 0 && n % (m-i) == 0) {cout << i;return 0;}}cout << -1;return 0;
}

T2. 质数的和与积

两个质数的和是 S S S,它们的积最大是多少?

时间限制:1 s
内存限制:64 MB

  • 输入
    一个不大于 10000 10000 10000 的正整数 S S S,为两个质数的和。
  • 输出
    一个整数,为两个质数的最大乘积。数据保证有解。
  • 样例输入
    50
    
  • 样例输出
    589
    

思路分析

此题考查枚举法与素数判定,难度入门。

根据题目描述, S S S 必定是两个素数之和。由于 2 2 2 是唯一的偶素数,为了加快枚举效率,我们可以分情况讨论:

  • 如果 S S S 是奇数,则直接输出 2 × ( S − 2 ) 2 \times (S-2) 2×(S2)
  • 如果 S S S 是偶数,为了求得乘积的最大值,需要保证两数的差值尽可能小,不妨对 S / 2 ∼ 3 S/2 \sim 3 S/23 范围内的整数进行倒序枚举验证,得到的第一对素数即为答案,输出其乘积即可。
/** Name: T2.cpp* Problem: 质数的和与积* Author: Teacher Gao.* Date&Time: 2024/11/16 15:23*/#include <iostream>using namespace std;bool 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 main()
{int s;cin >> s;if (s % 2 == 1) {cout << 2 * (s - 2);}else {for (int i = s/2; i >= 3; i--) {if (prime(i) && prime(s-i)) {cout << i * (s-i);break;}}}return 0;
}

T3. 括号匹配问题

在某个字符串(长度不超过 100 100 100)中有左括号、右括号和大小写字母;规定(与常见的算术式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用 $ 标注,不能匹配的右括号用 ? 标注。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过 100 100 100
  • 输出
    对每组输出数据,输出两行,第一行包含原始输入字符串,第二行由 $? 和空格组成,$? 表示与之对应的左括号和右括号不能匹配。
  • 样例输入
    ((ABCD(x)
    )(rttyy())sss)(
    
  • 样例输出
    ((ABCD(x)
    $$
    )(rttyy())sss)(
    ?            ?$
    

思路分析

此题考查模拟法与栈操作,属于基础题。

对于括号匹配问题,我们可以用栈进行模拟操作,具体来说:

  • 若遇到左括号 (,则入栈,注意入栈元素是左括号的下标,这是为了方便后面的标记;
  • 若遇到右括号 ),则检测栈是否为空,若不空,则弹出栈顶元素,否则将该右括号标记为不匹配;
  • 当字符串遍历完毕之后,若栈中还有元素,则将栈中左括号标记为不匹配。

为了方便输出,这里将标记数组定义为一个空格字符串,长度与输入的字符串保持一致。

/** Name: T3.cpp* Problem: 括号匹配问题* Author: Teacher Gao.* Date&Time: 2024/11/16 15:34*/#include <iostream>
#include <string>
#include <stack>using namespace std;int main()
{string s;while (cin >> s) {string f(s.size(), ' ');stack<int> stk;for (int i = 0; i < s.size(); i++) {if (s[i] == '(') {stk.push(i);}else if (s[i] == ')') {if (stk.empty()) {f[i] = '?';}else {stk.pop();}}}while (!stk.empty()) {f[stk.top()] = '$';stk.pop();}cout << s << endl << f << endl;}return 0;
}

T4. 吃糖果 2

现有 n n n 0 < n < 50 0 < n < 50 0<n<50)个糖果,每天只能吃 2 2 2 个或者 3 3 3 个,请计算共有多少种不同的吃法吃完糖果。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入的每一行包括一组测试数据,即为糖果数 n n n。最后一行为 0 0 0,表示测试结束。
  • 输出
    每一行输出对应一行输入的结果,即为吃法的数目。最后一行的 0 0 0 不用输出。
  • 样例输入
    1
    2
    3
    4
    12
    0
    
  • 样例输出
    0
    1
    1
    1
    12
    

思路分析

此题考查递推算法,属于基础题。

根据题目描述,容易得出递推公式 f i = f i − 2 + f i − 3 f_i = f_{i-2} + f_{i-3} fi=fi2+fi3,其中 i ≥ 3 i \ge 3 i3,初始条件为 f 1 = 0 f_1 = 0 f1=0 f 2 = f 3 = 1 f_2 = f_3 = 1 f2=f3=1。由于是多组数据,我们可以将所有可能的答案打表记录,对于每次询问以 O ( 1 ) O(1) O(1) 的时间复杂度给出答案。

/** Name: T4.cpp* Problem: 吃糖果 2* Author: Teacher Gao.* Date&Time: 2024/11/14 16:52*/#include <iostream>using namespace std;int main()
{int f[55] = {0, 0, 1, 1};for (int i = 4; i <= 50; i++) {f[i] = f[i-2] + f[i-3];}int n;while (cin >> n && n) {cout << f[n] << "\n";}return 0;
}

T5. 铺砖

对于一个 2 2 2 n n n 列的走道,现在用 1 × 2 1 \times 2 1×2 2 × 2 2 \times 2 2×2 的砖去铺满,问有多少种不同的方式。

时间限制:1 s
内存限制:128 MB

  • 输入
    整个测试有多组数据,请做到文件底结束。每行给出一个数字 n n n 0 ≤ n ≤ 250 0 \le n \le 250 0n250
  • 输出
    如题。
  • 样例输入
    2
    8
    12
    100
    200
    
  • 样例输出
    3
    171
    2731
    845100400152152934331135470251
    1071292029505993517027974728227441735014801995855195223534251
    

思路分析

此题考查递推算法与高精度,难度稍高。

根据题目描述,容易得出递推公式 f i = f i − 1 + 2 × f i − 2 f_i = f_{i-1} + 2\times f_{i-2} fi=fi1+2×fi2,其中 i ≥ 2 i \ge 2 i2,初始条件为 f 1 = 1 f_1 = 1 f1=1 f 2 = 3 f_2 = 3 f2=3。由于是多组数据,我们同样可以打表,对于每次询问以 O ( 1 ) O(1) O(1) 的时间复杂度给出答案。

至于高精度,这里用 f [ i ] [ 0 ] f[i][0] f[i][0] 表示第 i i i 项的长度, f [ i ] [ 1 ∼ f [ i ] [ 0 ] ] f[i][1 \sim f[i][0]] f[i][1f[i][0]] 表示第 i i i 项的值,为保证个位对齐,采用了逆序存储。

/** Name: T5.cpp* Problem: 铺砖* Author: Teacher Gao.* Date&Time: 2024/11/16 17:42*/#include <iostream>using namespace std;int f[255][105];int main()
{ios::sync_with_stdio(false);cin.tie(0);// 初始化f[1][1] = 1, f[2][1] = 3;f[0][0] = f[1][0] = f[2][0] = 1;// 递推 f[i] = f[i-1] + 2*f[i-2];for (int i = 3; i <= 250; i++) {// 高精度加法f[i][0] = max(f[i-1][0], f[i-2][0]);int x = 0;for (int j = 1; j <= f[i][0]; j++) {f[i][j] = f[i-1][j] + 2 * f[i-2][j] + x;x = f[i][j] / 10;f[i][j] %= 10;}if (x) f[i][++f[i][0]] = x;}int n;while (cin >> n) {for (int i = f[n][0]; i >= 1; i--) {cout << f[n][i];}cout << "\n";}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

旅行包发霉怎么处理 除霉及防霉解决方法

近些年听到很多箱包工厂的心声&#xff0c;为什么箱包旅行包每年都会出现长霉请况呢&#xff1f;长霉了&#xff0c;也就是长毛了&#xff0c;长出那些病菌、真菌、细菌等微生物。经ihaoer防霉人士介绍旅行包长霉处理方法如下&#xff1a; 旅行包长霉的因素 一、旅行包储存在阴…

14、交互补充

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置&#xff08;偏移&#xff09;、大小等 获得元素距离带有定位祖先元素的位置获得元素自身的大小&#xff08;宽度高度&#xff09;注意&#xff1a;返回的数值都不…

【IEEE出版、八大高校联合举办、稳定EI检索】第四届人工智能与智能制造国际研讨会(AIIM 2024,12月20-22日)

第四届人工智能与智能制造国际研讨会&#xff08;AIIM 2024&#xff09; The 4th International Symposium on Artificial Intelligence and Intelligent Manufacturing 2024年12月20-22日 中国成都 重要信息 大会官网&#xff1a;www.isaiim.com 大会时间&#xff1a;202…

朴素贝叶斯算法探讨与实践

引言 和撰写博文[1]的缘由一样&#xff0c;本文是想要在所创设的专栏[2]里把所谓的十大机器学习算法[3]全部过一遍。 朴素贝叶斯算法是传统机器学习里的一种可以被用来进行分类的算法&#xff0c;本文将对其原理进行说明&#xff0c;并基于原理给出一个基于该算法的分类实践。…

《数据在内存中的存储》

内存函数 1. 整数在内存中的存储 &#xff08;1&#xff09;旧识回顾&#xff1a; 之前在学到操作符的时候&#xff0c;我们就学过了下面的内容&#xff1a; 整数的二进制的表示方式有三种&#xff0c;原码、反码、补码 有符号的整数&#xff0c;三种表示方式均有符号位和数…

【路径规划】粒子群算法、遗传算法、差分进化算法、灰狼优化算法、麻雀优化算法(PSO、GA、DE、GWO、SSA)路径规划

摘要 本文探讨了多种智能优化算法在路径规划中的应用&#xff0c;包括粒子群算法&#xff08;PSO&#xff09;、遗传算法&#xff08;GA&#xff09;、差分进化算法&#xff08;DE&#xff09;、灰狼优化算法&#xff08;GWO&#xff09;和麻雀优化算法&#xff08;SSA&#x…

CSS基础知识05(弹性盒子、布局详解,动画,3D转换,calc)

目录 0、弹性盒子、布局 0.1.弹性盒子的基本概念 0.2.弹性盒子的主轴和交叉轴 0.3.弹性盒子的属性 flex-direction row row-reverse column column-reverse flex-wrap nowrap wrap wrap-reverse flex-dirction和flex-wrap的组合简写模式 justify-content flex-s…

如何搭建一台邮箱服务器,配置满分邮箱

如何搭建一台邮箱服务器,配置满分邮箱 搭建一台个人邮箱服务器听上去非常有技术含量&#xff0c;但只要准备工作充分&#xff0c;并且选择合适的软件&#xff0c;配置满分的邮箱&#xff0c;其实并没有想象中那么困难。在这篇文章中&#xff0c;我们将介绍搭建邮箱服务器的 必备…

DevOps工程技术价值流:打造卓越项目协作的优化宝典

一、引言 解锁项目协作的无限潜力&#xff0c;覆盖全链路实现流畅高效。 在当今瞬息万变的商业环境中&#xff0c;项目协作的效率和效果直接关系到企业的竞争力和市场响应速度。DevOps工程技术价值流中的项目协作优化&#xff0c;不仅是技术层面的革新&#xff0c;更是团队协…

【JAVA毕业设计】基于Vue和SpringBoot的冬奥会科普平台

本文项目编号 T 610 &#xff0c;文末自助获取源码 \color{red}{T610&#xff0c;文末自助获取源码} T610&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状 六、核心代码6.1 查询项目类型6.…

基于的图的异常检测算法OddBall

OddBall异常检测算法出自2010年的论文《OddBall: Spotting Anomalies in Weighted Graphs》&#xff0c;它是一个在加权图(weighted graph)上检测异常点的算法&#xff0c;基本思路为计算每一个点的一度邻域特征&#xff0c;然后在整个图上用这些特征拟合出一个函数&#xff0c…

网络工程师教程第6版(2024年最新版)

网络工程师教程(第6版)由清华大学出版社出版,由工业和信息化部教育与考试中心组编,张永刚、王涛、高振江任主编,具体介绍如下。 相关信息: 出版社: 清华大学出版社 ISBN:9787302669197 内容简介: 本书是工业和信息化部教育与考试中心组织编写的考试用书。本书 根据…

算法复杂度——大O表示法

参考视频&#xff1a;常见的大O表示法有哪些&#xff1f;时间复杂度是什么&#xff1f;_哔哩哔哩_bilibili

Maven maven项目构建的生命周期 Maven安装配置 IDEA 配置 Maven

一&#xff0c;Maven的概述 Maven的作用&#xff1a;专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提…

排序算法(基础)大全

一、排序算法的作用&#xff1a; 排序算法的主要作用是将一组数据按照特定的顺序进行排列&#xff0c;使得数据更加有序和有组织。 1. 查找效率&#xff1a;通过将数据进行排序&#xff0c;可以提高查找算法的效率。在有序的数据中&#xff0c;可以使用更加高效的查找算法&…

GraphLLM:基于图的框架,通过大型语言模型处理数据

GraphLLM是一个创新的框架&#xff0c;它允许用户通过一个或多个大型语言模型&#xff08;LLM&#xff09;来处理数据。这个框架不仅提供了一个强大的代理&#xff0c;能够执行网络搜索和运行Python代码&#xff0c;还提供了一套工具来抓取网页数据&#xff0c;并将其重新格式化…

TransFormer--解码器:概括

TransFormer--解码器&#xff1a;概括 假设我们想把英语句子I am good&#xff08;原句&#xff09;翻译成法语句子Je vais bien&#xff08;目标句&#xff09;。首先&#xff0c;将原句I am good送入编码器&#xff0c;使编码器 学习原句&#xff0c;并计算特征值。在前文中&…

3D Gaussian Splatting 代码层理解之Part1

2023 年初,来自法国蔚蓝海岸大学和 德国马克斯普朗克学会的作者发表了一篇题为“用于实时现场渲染的 3D 高斯泼溅”的论文。该论文提出了实时神经渲染的重大进步,超越了NeRF等以往方法的实用性。高斯泼溅不仅减少了延迟,而且达到或超过了 NeRF 的渲染质量,在神经渲染领域掀…

K8s学习笔记之了解k8s的网络模型

文章目录 docker 网络模型容器与容器之间&#xff0c;容器与宿主机之间如何通信容器访问外部网络外部网络访问容器 k8s 网络模型CNIpod 网络配置流程 k8s 热门网络插件介绍Flannel 来源Calico 来源Cilium 来源 k8s 网络插件的工作模式Flannel 的工作模式Calico 的工作模式BGP 和…

探索高效的 Prompt 框架:RBTR 提示框架的奥秘与优势

前言 在当今数字化的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们生活和工作中不可或缺的一部分。而 Prompt 作为与 AI 交互的关键工具&#xff0c;其质量直接影响着我们获取信息的准确性和有用性。今天&#xff0c;我们将深入探讨一个通用的 Prompt 框架…