鸽巢问题的公式的核心算法就是把“物品数除以抽屉数”的结果向上取整,得到的数就是“至少有一个抽屉里有几个物品”的最少保证数量。你可以把它理解成平均分配后的保底值:物品数越大,这个保底值越大;抽屉数越大,这个保底值越小。这个公式常用于分组、分配、存在性判断这类场景,用来快速判断某个组里会达到多少。
一、公式写法
| 项目 | 含义 | 记法 |
|---|---|---|
| 物品数 | 被放入抽屉里的对象个数 | n |
| 抽屉数 | 用来装物品的分组个数 | m |
| 保底数量 | 至少有一个抽屉里的数量下限 | ⌈n ÷ m⌉ |
公式:
n 个物品放入 m 个抽屉,至少有一个抽屉里有 ⌈n ÷ m⌉ 个物品。
二、计算步骤
- 第一步:确认物品数 n。
- 第二步:确认抽屉数 m。
- 第三步:计算 n ÷ m。
- 第四步:对结果向上取整。
- 第五步:用“至少有一个抽屉里有……”写出结果。
三、举例说明
| 题目条件 | 计算过程 | 结果 |
|---|---|---|
| 10 个学生参加 3 个兴趣小组 | 10 ÷ 3 = 3.33,向上取整为 4 | 至少有一个兴趣小组里有 4 个学生 |
| 20 枚硬币放进 6 个盒子 | 20 ÷ 6 = 3.33,向上取整为 4 | 至少有一个盒子里有 4 枚硬币 |
| 7 本书放进 2 个抽屉 | 7 ÷ 2 = 3.5,向上取整为 4 | 至少有一个抽屉里有 4 本书 |
四、这样计算的原因
按照平均分配的思路,把 n 个物品均分到 m 个抽屉里,每份大约是 n ÷ m。除不尽时,剩余部分会继续安排到某些抽屉里,因此这些抽屉里的数量会达到整数上限。为了让总数保持为 n,至少有一个抽屉需要包含 ⌈n ÷ m⌉ 个物品。
五、常用变体
| 已知条件 | 计算方式 | 得到含义 |
|---|---|---|
| 每个抽屉最多放 q 个 | m 个抽屉最多可放 m × q 个 | 若物品数达到 m × q + 1,至少有一个抽屉会放 q + 1 个 |
| 抽屉数固定为 m | 物品数越多,⌈n ÷ m⌉ 越大 | 物品数增加会让保底数量提高 |
| 物品数固定为 n | 抽屉数越多,⌈n ÷ m⌉ 越小 | 抽屉数增加会让保底数量降低 |
【常见问题】
问题1:鸽巢问题的公式是什么?
回答1:鸽巢问题的公式就是“物品数除以抽屉数并向上取整”。用字母表示是:n 个物品放入 m 个抽屉,至少有一个抽屉里有 ⌈n ÷ m⌉ 个物品。
问题2:怎样使用鸽巢问题的公式计算至少数量?
回答2:使用鸽巢问题的公式时,先确认物品数 n 和抽屉数 m,再计算 n ÷ m,最后把结果向上取整,得到的整数就是“至少有一个抽屉里有几个物品”的最少保证数量。
问题3:鸽巢问题的公式适合哪些场景?
回答3:鸽巢问题的公式适合分组、分配、存在性判断这类场景。比如安排座位、分小组、分配物品、判断某类对象会达到多少,都可以用这个公式。
问题4:鸽巢问题的公式里的抽屉数怎么确定?
回答4:在鸽巢问题的公式里,抽屉数要按分组类别来定。哪个类别负责装物品,哪个类别就是抽屉数。比如按星期分类,抽屉数是 7;按月份分类,抽屉数是 12。
免责声明:本内容用于通用学习整理,具体应用以教材、课程和题目条件为准。
