GESP2025年9月认证C++五级真题与解析(单选题9-15)


🌟 第 9 题:唯一分解定理------数字的"身份证"


(1)🧸 小故事

每个小朋友都有 唯一的身份证号 🪪

👉 不管你怎么写、怎么拆

👉 这个身份证只属于你一个人

整数也一样,每个整数都有一份 唯一的"素数身份证"


(2)📘 题目

唯一分解定理描述的是( )

A. 每个整数都能表示为任意素数的乘积

B. 每个大于 1 的整数能唯一分解为素数幂乘积(忽略顺序)

C. 合数不能分解为素数乘积

D. 素数只有两个因子:1 和自身


(3)🧠 核心理解

60 为例:

cpp 复制代码
60 = 2 × 2 × 3 × 5
   = 2² × 3 × 5

👉 顺序可以乱

👉 但 用哪些素数、各自用几次,是唯一的


(4)✅ 正确答案:B

⚠️ 易错点:

  • D 是"素数定义",不是唯一分解定理

  • A 的"任意"是错的!



🌟 第 10 题:在有序矩阵里找第 k 小的数 🔍


(1)🧸 小故事

小明有一张 魔法棋盘 ♟️

  • 每一行从左到右越来越大

  • 每一列从上到下越来越大

老师问:

👉 第 k 小的数字是谁?


(2)📘 解题思路(不用一个个数)

👉 用 二分答案 + 统计 ≤ x 的个数

核心循环:

cpp 复制代码
while (lo < hi) {
    int mid = (lo + hi) / 2;
    if (countLE(matrix, mid) >= k)
        hi = mid;
    else
        lo = mid + 1;
}

(3)🧠 为什么这样写?

  • countLE(mid):看看 ≤ mid 的数够不够 k 个

  • 够了 → 答案可能更小

  • 不够 → 答案要更大


(4)✅ 正确答案:C

⚠️ 易错点:

  • 这里是 找"最小满足条件的值"

  • 所以是 hi = mid,不是 mid - 1



🌟 第 11 题:快速排序的"坏脾气"


(1)🧸 小故事

快速排序像一个爱分组的老师 👩‍🏫

  • 每次选一个"基准"

  • 把小的放左边,大的放右边

但如果老师 每次都选最倒霉的那个 😅......


(2)📘 题目问

下列关于快速排序的说法,哪一个是错误的?


(3)🧠 关键点

  • 快排 平均 很快(O(n log n))

  • 最坏情况 会退化成 O(n²)

  • partition 中左右扫描顺序 不能随便换


(4)❌ 错误说法

👉 D :扫描顺序可以交换 ❌

(交换会破坏算法逻辑)


✅ 正确答案:D



🌟 第 12 题:归并排序------合并阶段的小细节 🧩


(1)🧸 小故事

两队已经排好序的小朋友 👧👦

老师要把他们 合成一支更大的有序队伍


(2)📘 关键代码

cpp 复制代码
while (j <= right) {
    tmp[k++] = nums[j++];
}

(3)🧠 为什么是 j <= right

  • 右半部分是 [mid+1, right]

  • 一个都不能漏!


(4)✅ 正确答案:D

⚠️ 常见错误:

  • 写成 < right → 最后一个丢了


🌟 第 13 题:电影院排片------贪心算法登场 🎬


(1)🧸 小故事

你是电影院经理 🎟️

只有一个厅,要放 最多不重叠的电影

你该怎么选?


(2)🧠 贪心策略

👉 结束时间早的电影先放!


排序规则

cpp 复制代码
return a[1] < b[1];   // 按结束时间

更新 lastEnd

cpp 复制代码
lastEnd = movies[i][1];

(3)✅ 正确答案:B

📌 贪心口诀:

能早结束,就早结束

给后面的留空间



🌟 第 14 题:最大子数组和------这是哪种算法?


(1) 🧸 小故事

小明在一条路上捡金币 💰

有些地方是金币,有些是陷阱

👉 要选 一段连续路,金币最多!


(2) 📘 题目代码特点

  • 分左右

  • 算中间

  • 用递归


(3) 🧠 算法本质

✔ 分治算法

❌ 不是贪心(虽然也有贪心解法)


(4) ❌ 错误说法

👉 B:采用贪心算法


(5) ✅ 正确答案:B



🌟 第 15 题:大整数 +1(进位的艺术) ➕


(1)🧸 小故事

数字是这样存的:

cpp 复制代码
[1, 2, 9]

表示 129

现在要 +1 🎉


(2)🧠 正确思路

  • 从最后一位开始

  • 遇到 9 → 变 0,继续进位


(3)正确代码

cpp 复制代码
digits[i] = 0;

(4)❌ 错误写法

  • 设成 9

  • 设成 10

  • 设成 1


(5)✅ 正确答案:A


相关推荐
lvwangshu23 分钟前
exBSGS 算法
数学·算法
不会就选b24 分钟前
算法日常・每日刷题--<贪心+大根堆>2
数据结构·算法
码艺-Alimjan25 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
AI服务老曹28 分钟前
算法任务配置完整流程:明厨亮灶项目从0到1怎么做 | AI视频分析算法实践
人工智能·算法·音视频
hahaha601638 分钟前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
hans汉斯43 分钟前
【计算机科学与应用】基于联合熵驱动改进麻雀搜索优化VMD的DAS信号去噪方法
深度学习·算法·yolo·软件工程·汉斯出版社
词却1 小时前
机器学习入门:手写数字识别与算法对比
人工智能·算法·机器学习
水饺编程1 小时前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
张欣-男1 小时前
3分钟理解线性代数
线性代数·算法
Existence_Time1 小时前
CSP 考前复习
c++