ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GESP2026年9月认证C++八级( 第一部分选择题(1~7题)精讲

GESP2026年9月认证C++八级( 第一部分选择题(1~7题)精讲 第1题数字城堡——数一数有多少个三位数题目用数字 0、1、2、3 、4 、5组成没有重复数字的三位数并且这个三位数能被 3 整除共有多少个本题答案是 B、40。这道题真正考的是⭐ “枚举 数位限制 整除规律”① 什么叫“三位数”比如123 245 907都是三位数。但是012不算三位数。因为它实际上就是12所以百位不能是0。② “不能重复”是什么意思假如数字是1 2 3 4 5那么123可以。但是112不可以。因为1出现了两次。所以我们可以把三个位置想象成三个房间百位 十位 个位 ↓ ↓ ↓ [ ] [ ] [ ]每个房间放一个数字而且不能重复。③ 计算过程 第一步先记住“三位数”的规则三位数的百位不能是 0。例如123✅ 是三位数305✅ 是三位数012❌ 不是三位数而且题目要求没有重复数字。 第二步判断一个数能不能被 3 整除有一个非常重要的口诀一个数能被 3 整除 ⇔ 各个数字的和能被 3 整除。例如123因为12366 能被 3 整除所以 123 能被 3 整除。再比如40540599 能被 3 整除所以 405 也能被 3 整除。 第三步先挑出3个数字我们从0,1,2,3,4,5中选择3个不同的数字。按照数字对 3 的余数分类数字除以3的余数0、301、412、52三个数字的和要能被3整除有三种情况情况①0 0 0只能选择{0,3}但只有两个数字不够选3个。所以0种。情况②0 1 2每一类各选一个余数00、3 → 2种余数11、4 → 2种余数22、5 → 2种所以2 × 2 × 2 8得到8组数字。情况③1 1 1从1、4中选3个不可能。所以0种。情况④2 2 2从2、5中选3个也不可能。所以0种。因此我们真正需要考虑的就是8组数字{0,1,2} {0,1,5} {0,4,2} {0,4,5} {3,1,2} {3,1,5} {3,4,2} {3,4,5} 第四步每组数字能组成几个三位数这里是本题最容易“粗心翻车”的地方如果没有03个数字可以随便排列3!3×2×16例如{1,2,5}125、152、215、251、512、521一共6个。但是含有0的组不一样例如{0,1,2}。三个数字一共有3! 6种排列012、021、102、120、201、210但是012❌021❌因为它们不是三位数。所以只有102、120、201、210一共4个。 第五步8组里面有几组含0前面的8组中含0的4组不含0的4组所以总数4×4 4×6 1624 40答案就是 B40个 本题“解题三连”遇到这道题不要一个一个数字瞎试可以按照下面的方法① 先看“能不能被3整除”看数字之和不用真的算整个三位数② 再看“有没有0”有0排列时要扣掉百位为0的情况。③ 最后排列没有03个数字 →3! 6个有03个数字 →6-24个所以本题4×44×6 40 记忆口诀三位数先看百位不能重复看三位最后分开来检查整除最后结果合起来。 第2题围成一圈坐——圆排列来了题目大意6个人围成一圈坐座位没有区分但区分时针方向而且甲、乙两人必须相邻。共有多少种不同坐法第2题答案是C、48。有的同学这题第一次看容易懵“座位没有区分”是什么意思1、 普通排队 vs 围成一圈假设有A B C D排成一排A B C D和B C D A是不同的。但是围成圆圈以后A D B C如果整体转一下B A C D其实大家的相对位置没有改变。所以圆桌排列不能把“整体旋转”当成新的排列。2、 甲乙必须相邻怎么办这是本题最重要的技巧。假设甲 乙必须挨在一起。我们可以把他们看成一个“超级小队”[甲乙]于是原来甲、乙、丙、丁、戊……就变成[甲乙]、丙、丁、戊……问题瞬间简单很多3、⚠️ 但是还有一个坑甲乙可以甲乙也可以乙甲所以最后还要考虑2种 这就是一个非常重要的排列组合技巧以后看到“A、B必须相邻”马上想到捆绑法把A B捆成[AB]然后再排列。4、⭐ 先安排这5个“对象”现在有[甲乙]丙丁戊己一共5个对象。5个不同的人或对象围成圆桌(5−1)!所以4! 24种。5、⭐ 别忘了甲乙内部还有两种顺序甲乙绑在一起并不意味着甲乙只有这一种。还可以乙甲因为题目只说甲、乙必须相邻并没有规定谁坐谁左边。所以2种。6、 最终答案因此4! × 2 24 × 2 48所以答案✅ C、48种7、 给同学们一个特别好记的口诀遇到“几个人围成一圈 某两个人必须相邻”可以马上想到第一步绑起来甲乙 →[甲乙]第二步算圆排列原来6个人绑成一个后变成5个(5−1)!第三步考虑内部顺序甲乙有2!种。所以(6−1−1)! × 2!也就是4!×248 容易犯的两个错误❌ 错误1直接算6!这是把圆桌当成排队了。圆桌整体旋转后应该算同一种所以不能直接6!。❌ 错误2算4!后忘记乘2有人会想“甲乙绑起来剩下5个圆排列就是4!24。”但是漏掉了甲乙 乙甲这两种是不同的。 最终记忆圆桌先消旋转相邻先把人绑绑完再算圆排列内部顺序别忘光这道题真正考的是能不能识别出两个核心思想① 圆排列(n-1)!② 相邻问题捆绑法。 第3题合并石子——不要乱合要找最优方案题目有4堆石子数量分别为1、2 、 3、 4。每次可以合并相邻两堆合并代价是两堆石子的数量之和。最终把所有石子合成一堆求最小总代价。本题答案是B、19这道题非常重要因为它开始进入⭐ 贪心思想 为什么合并顺序很重要比如有1 2 3 4如果先合1 2 3花费3现在3 3 4再合3 3 6花费6最后6 4 10花费10总花费3 6 10 19但是如果换一种合并顺序结果可能不同。所以不是“能合就合”而是要想办法让总成本最小。 为什么小的数字应该尽量早合这是这类题最重要的直觉。假设有1 2 100如果先把1 2合起来3只花3而如果让100很早参加合并它后面可能还会被重复计算。因为越早合并的石子 ↓ 会参与更多次后续合并 ↓ 所以越应该让“小的东西”早出现这就是一种非常经典的让小成本尽早发生。 这题还埋了一个重要知识点题目特别强调只能合并相邻两堆。这意味着它和普通的“随便合并”问题不完全一样。如果不限制相邻可以使用优先队列 priority_queue每次找最小的两堆。但这里有相邻这个限制。所以做题的时候一定要仔细看题目的限制条件。可以使用区间DP来解决这个问题如果石子数量变多例如4 5 9 2 7 3 8可以使用区间动态规划。设sum[i][j]表示第 i 堆到第 j 堆石子的总数量。设dp[i][j]表示将第 i 堆到第 j 堆合并成一堆的最小总代价。状态转移这里的 k 表示最后一次合并时左边和右边的分界位置。这道题就成为一个区间DP问题。 第4题二叉树遍历——根据先序中序还原树题目给出先序A B D E C F G中序D B E A F C G问后序遍历是什么答案是A 选项D E B F G C A。 第一步先搞懂三个遍历先序顺序根 → 左 → 右口诀根左右中序顺序左 → 根 → 右口诀左根右后序顺序左 → 右 → 根口诀左右根 第二步找到根节点先序A B D E C F G ↑ 第一个就是根所以A是整棵树的根。 第三步在中序中寻找 A中序D B E A F C G ↑ A所以左边 D B E 右边 F C G于是树的大概形状A / \ ? ? 第四步分析左子树左边有D B E先序中 A 后面的部分是B D E所以左子树的根是B中序D B E ↑ B因此B / \ D E 第五步分析右子树右边F C G对应先序C F G所以右子树根是C中序F C G ↑ C因此C / \ F G 整棵树出来了A / \ B C / \ / \ D E F G现在求后序 左 → 右 → 根左子树 BD E B右子树 CF G C最后根 AA合起来D E B F G C A所以答案✅ A 二叉树遍历“万能口诀”一定要让孩子背下来先序根 左 右 中序左 根 右 后序左 右 根真正考试时先序找根中序分左右递归拆下去。这句话非常重要。⚡ 第5题快速幂——指数很大怎么办本题考的是快速幂算法的正确认识。本题答案是B。题目选项中 B 的核心意思是快速幂把指数进行二进制拆分把普通乘幂的乘法次数从线性级别优化到对数级别。 普通方法比如2^10我们可以2×2×2×2×2×2×2×2×2×2需要很多次乘法。如果2^1000000000那就惨了。电脑“你让我乘十亿次” 快速幂的魔法快速幂发现一个秘密2^10可以写成2^10 2^5 × 2^5而2^5 2 × 2^4更重要的是2^10 (2^5)^2不断“平方”就可以快速得到结果。 为什么和二进制有关比如13二进制是1101也就是13 8 4 1所以a^13 a^8 × a^4 × a而a^2 a^4 a^8都可以通过不断平方得到a ↓ 平方 a² ↓ 平方 a⁴ ↓ 平方 a⁸是不是一下子快了很多⭐ 复杂度变化普通乘法O(n)快速幂O(log n)这是非常重要的优化。❌ 其他说法为什么错A可以处理任意负指数普通整数快速幂并不能直接这样说。例如2^-3结果是1/8这已经不是普通整数幂运算的范畴了。C只能模质数时使用错误。快速幂本身并不要求模数必须是质数。例如long long quickpow(long long a, long long n, long long mod)mod不一定是质数。D空间复杂度通常很大也不对。普通快速幂只需要几个变量。所以空间复杂度通常是O(1) 第6题杨辉三角——数字藏着组合数学的秘密题目杨辉三角中第 ___7___ 行第 ___3__ 个数行、列均从0开始计数是多少答案B、 35。这题最关键的是⚠️ 一定看清楚“从几开始计数” 杨辉三角长什么样1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1规律两边永远是1中间的数上面左边 上面右边例如1 3 3 1 ↓ ↓ 3 3 6下一行就是1 4 6 4 1 杨辉三角其实就是组合数如果采用从0开始编号第 n 行第 k 个就是C(n,k)本题为第7行实际上就是C(7,0) C(7,1) C(7,2) C(7,3) C(7,4) C(7,5) C(7,6) C(7,7)也就是1 7 21 35 35 21 7 1 同学们一定注意题目如果说“从 0 开始计数”和“从 1 开始计数”结果会完全不同。例如从0开始 第0行1 第1行1 1 第2行1 2 1所以看到杨辉三角题第一件事 先看编号从 0 还是从 1 开始这是非常典型的考试陷阱。 第7题长方形——把文字变成数学式子题目一个长方形的长是宽的若干倍周长为若干求面积。本题答案C 、108虽然题目中的具体数字在文件文本提取时丢失了但解题方法非常明确。 第一步设宽假设宽 x题目说长是宽的 k 倍所以长 k * x 第二步使用周长公式长方形周长周长 2 * (长 宽)所以P 2 * (k*x x)提取 xP 2 * (k 1) * x因此x P / [2*(k1)] 宽 48 / [2 * ( 31 ) ] 6 第三步求面积面积S 长 × 宽所以S kx²把刚刚求出来的x代进去即可。S kx² S 3 * 6 * 6 108 同学们看到“长是宽的几倍”马上可以这样写宽 x 长 kx看到“周长”2 × (长 宽)看到“面积”长 × 宽这就是一道非常标准的文字 → 数学模型 → 公式计算题。 前7题知识点把这7道题放在一起其实是在考一整套“算法大脑”题号核心知识小朋友记忆法1枚举、整除、数字排列三位数别重复再查整除2圆排列、捆绑法相邻就捆起来3合并石子、最优策略合并顺序影响总成本4二叉树遍历先序找根中序分左右5快速幂指数二进制平方往前冲6杨辉三角、组合数先看从0还是从1数7数学建模先设宽再求长 “七关冒险口诀”第一关数字城堡——枚举不能乱 第二关圆桌宴会——相邻先捆绑 第三关石子合并——顺序很重要 第四关二叉森林——先序找根 中序分左右后序左右根 第五关快速魔法——二进制 不断平方 第六关杨辉宝塔——先看编号从哪里开始 第七关长方形王国——文字条件变公式
返回列表