


🏰 第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
因为:
1+2+3=6
6 能被 3 整除,所以 123 能被 3 整除。
再比如:
405
4+0+5=9
9 能被 3 整除,所以 405 也能被 3 整除。
🌟 第三步:先挑出3个数字
我们从:
0,1,2,3,4,5
中选择 3个不同的数字。
按照数字对 3 的余数分类:
| 数字 | 除以3的余数 |
|---|---|
| 0、3 | 0 |
| 1、4 | 1 |
| 2、5 | 2 |
三个数字的和要能被3整除,有三种情况:
情况①:0 + 0 + 0
只能选择:
{0,3}
但只有两个数字,不够选3个。
所以 0种。
情况②:0 + 1 + 2
每一类各选一个:
-
余数0:0、3 → 2种
-
余数1:1、4 → 2种
-
余数2:2、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}
🌟 第四步:每组数字能组成几个三位数?
这里是本题最容易"粗心翻车"的地方!
如果没有 0,3个数字可以随便排列:
3!=3×2×1=6
例如 {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 =16+24 = 40
🎉 答案就是 B:40个!
🧠 本题"解题三连"
遇到这道题,不要一个一个数字瞎试,可以按照下面的方法:
① 先看"能不能被3整除"
看数字之和,不用真的算整个三位数!
② 再看"有没有0"
有0,排列时要扣掉百位为0的情况。
③ 最后排列
-
没有0: 3个数字 →
3! = 6个 -
有0: 3个数字 →
6-2=4个
所以本题:
4×4+4×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!×2!=48
🚨 容易犯的两个错误
❌ 错误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
可以使用区间动态规划。
设:
sumij
表示第 i 堆到第 j 堆石子的总数量。
设:
dpij
表示将第 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
现在求:
后序 = 左 → 右 → 根
左子树 B:
D E B
右子树 C:
F G C
最后根 A:
A
合起来:
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行
实际上就是:
cpp
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 倍
所以:
cpp
长 = k * x
📏 第二步:使用周长公式
长方形周长:
cpp
周长 = 2 * (长 + 宽)
所以:
cpp
P = 2 * (k*x + x)
提取 x:
cpp
P = 2 * (k + 1) * x
因此:
cpp
x = P / [2*(k+1)]
宽 = 48 / [2 * ( 3+1 ) ] = 6
🎯 第三步:求面积
面积:
S = 长 × 宽
所以:
cpp
S = kx²
把刚刚求出来的 x 代进去即可。
cpp
S = kx²
S = 3 * 6 * 6 = 108
🌟 同学们看到"长是宽的几倍"
马上可以这样写:
宽 = x
长 = kx
看到"周长":
2 × (长 + 宽)
看到"面积":
长 × 宽
这就是一道非常标准的:
文字 → 数学模型 → 公式计算
题。
🏆 前7题知识点
把这7道题放在一起,其实是在考一整套"算法大脑":
| 题号 | 核心知识 | 小朋友记忆法 |
|---|---|---|
| 1 | 枚举、整除、数字排列 | 三位数,别重复,再查整除 |
| 2 | 圆排列、捆绑法 | 相邻就捆起来 |
| 3 | 合并石子、最优策略 | 合并顺序影响总成本 |
| 4 | 二叉树遍历 | 先序找根,中序分左右 |
| 5 | 快速幂 | 指数二进制,平方往前冲 |
| 6 | 杨辉三角、组合数 | 先看从0还是从1数 |
| 7 | 数学建模 | 先设宽,再求长 |
🧠 "七关冒险口诀"
第一关:数字城堡------枚举不能乱!
第二关:圆桌宴会------相邻先捆绑!
第三关:石子合并------顺序很重要!
第四关:二叉森林------先序找根,
中序分左右,后序左右根!
第五关:快速魔法------二进制 + 不断平方!
第六关:杨辉宝塔------先看编号从哪里开始!
第七关:长方形王国------文字条件变公式!






