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


相关推荐
罗西的思考13 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队16 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
To_OC1 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC1 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境2 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局2 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法