【果果编程课】 第012课:容斥原理的魔法秘密 —— 文氏图、底层推导与逻辑大揭秘
【果果编程课012】容斥原理的魔法秘密 ——
文氏图、底层推导与逻辑大揭秘
45分钟完整课程 | 四年级原理进阶篇
主题:彻底搞懂“为什么重叠要加了再减、减了再加”!不再死记公式,而是像数学家一样推导!
适用对象:已学完001-011课(for循环、define函数、if判断、简单算术)的小朋友
课程目标:
1. 用文氏图“看到”重叠
2. 通过“被算几次”表格“懂为什么”
3. 亲手推导两个集合 + 三个集合公式
4. 抽象总结一般容斥原理
5. 用Racket代码一键验证所有小测验答案
课程准备(3分钟)
- 每人一张空白文氏图纸(2圆 + 3圆模板)+ 彩色笔
- 投影仪(展示下面动态图片 + 表格)
- DrRacket已打开(#lang racket)
- 魔法咒语卡片(打印本课公式 + 表格模板)
1. 开场故事 + 提出核心问题(6分钟)
“同学们!果果拿到二胡数学‘我特别爱做小测验06’,里面全是重叠难题!
40个小精灵都喜欢馒头糖或米饭糖……光明小学三个活动小组很多人同时参加……
核心问题:为什么不能直接相加?重叠的人被多算了!
今天我们不抄答案,而是画图 → 拆区域 → 推公式 →
彻底懂魔法!
口号:重叠不怕!原理来救!🪄”
2. 核心1:两个集合的容斥原理(12分钟)—— 底层逻辑大揭秘
步骤1:画文氏图 + 标区域
老师投影(学生同步画):
三个区域:
- 只喜欢馒头(A-B)
- 只喜欢米饭(B-A)
- 两种都喜欢(A∩B)
步骤2:详细推导过程(关键!)
总人数 = 只馒头 + 只米饭 + 两种都喜欢
= (喜欢馒头 - 两种都喜欢) + (喜欢米饭 - 两种都喜欢) + 两种都喜欢
公式诞生:
|A ∪ B| = |A| + |B| - |A ∩ B|
步骤3:第1题演算
40 = 30 + 喜欢米饭 - 7
→ 喜欢米饭 = 40 - 30 + 7 = 17人
动手:改成“总50人,喜欢馒头35,两种都喜欢8”,自己推一次!
Racket验证
1 | (define 喜欢米饭 (- (+ 40 7) 30)) |
3. 核心2:三个集合的容斥原理(15分钟)—— 最精彩拆解!
子步骤1:认识7个区域(4分钟)
老师投影3圆图(学生标号):
区域编号:
① 只体育 ② 只音乐 ③ 只书法
④ 体育+音乐(不书法) ⑤ 体育+书法(不音乐) ⑥
音乐+书法(不体育)
⑦ 三个都参加
子步骤2:魔法计数表格(最重要!6分钟)
投影这张表格(学生抄写+填数字,这是本课灵魂!):
「被算几次」分析表(第2题真实数据)
| 区域 | 区域名称 | 实际人数 | A+B+C 被算几次 | 减AB+AC+BC 后 | 最后+ABC 后 | 最终正确 |
|---|---|---|---|---|---|---|
| ① | 只体育 | 45 | 1 次 | 1 次 | 1 次 | ✅ |
| ② | 只音乐 | 34 | 1 次 | 1 次 | 1 次 | ✅ |
| ③ | 只书法 | 21 | 1 次 | 1 次 | 1 次 | ✅ |
| ④ | 体育+音乐(不书法) | 2 | 2 次 | 1 次 | 1 次 | ✅ |
| ⑤ | 体育+书法(不音乐) | 5 | 2 次 | 1 次 | 1 次 | ✅ |
| ⑥ | 音乐+书法(不体育) | 8 | 2 次 | 1 次 | 1 次 | ✅ |
| ⑦ | 三个都参加 | 2 | 3 次 | 0 次 | 1 次 | ✅ |
老师讲解金句:
- 只参加一个(①②③):算1次,刚好!
- 参加两个(④⑤⑥):算2次,多1次 → 要减!
- 三个都参加(⑦):算3次,减完剩0 → 要加回来!
所以公式最后要 +ABC(救命的+2)!
子步骤3:公式诞生 + 演算
|A ∪ B ∪ C| = |A| + |B| + |C| - |AB| - |AC| - |BC| + |ABC|
54 + 46 + 36 - 4 - 7 - 10 + 2 = 117人
验证:表格“实际人数”列相加 = 117(完全一致!)
Racket通用函数
1 | (define (容斥-三个集合 A B C AB AC BC ABC) |
4. 原理应用:解决第3、4题(6分钟)
第3题(1~1000不被2或3或5整除)
先算“被2或3或5整除的人”:用公式
|2 ∪ 3 ∪ 5| = 500 + 333 + 200 - 166 - 100 - 66 + 33 = 734
→ 不被整除 = 1000 - 734 = 266个
第4题(面向老师人数)
变形容斥:100 - (25 + 16 - 2×8) = 75名
Racket一键验证
1
2
3
4
5(define (不被235整除 n)
(- n (容斥-三个集合 (quotient n 2) (quotient n 3) (quotient n 5)
(quotient n 6) (quotient n 10) (quotient n 15)
(quotient n 30))))
(不被235整除 1000) ; 266
第5题(小数复习):
(1) 7.6×0.82 = 6.23
(2) 0.59÷1.4 ≈ 0.42
5. 抽象总结 + 原理升华(3分钟)
容斥原理本质:
“直接加会重复计数 → 用‘奇加偶减’修正(单+、双-、三+……)”
一般公式(n个集合):
∑单个 - ∑两个交集 + ∑三个交集 - …
今天收获:
文氏图让你“看到”,表格让你“懂为什么”,公式让你“秒杀所有题”!
课堂PK + 作业(2分钟)
- PK:谁能最快把表格里7个实际人数全算对?
- 家庭作业(必做):
- 画第2题完整带数字的7区域文氏图,用自己的话解释“为什么最后要+2”
- 用公式算1~100不被2或3整除的数(答案自己验证)
- 画第2题完整带数字的7区域文氏图,用自己的话解释“为什么最后要+2”
完整一键运行代码(复制到DrRacket直接出全部答案):
1
2
3
4
5
6
7
8
9
10#lang racket
(define (容斥-三个集合 A B C AB AC BC ABC)
(+ A B C (- AB) (- AC) (- BC) ABC))
(printf "第1题:~a 人\n" (- (+ 40 7) 30))
(printf "第2题:~a 人\n" (容斥-三个集合 54 46 36 4 7 10 2))
(printf "第3题:~a 个\n" (- 1000 (容斥-三个集合 (quotient 1000 2) (quotient 1000 3) (quotient 1000 5)
(quotient 1000 6) (quotient 1000 10) (quotient 1000 15)
(quotient 1000 30))))
(printf "第4题:~a 名\n" (- 100 (quotient 100 4) (quotient 100 6) (- (* 2 (quotient 100 12)))))
预告:第013课 —— 容斥 + 闭包魔法盒子(果果宠物店多重喜好统计)
同学们,这节课不是为了做对题,而是为了懂魔法!
现在拿起彩笔,把容斥原理的秘密画出来吧~ 🪄📊
(本课零新语法,只用已学知识 + 原理拆解,孩子看完真正“会了”!)