$$
\left| \bigcup_{i=1}^6 A_i \right|
= \sum_{i=1}^6 |A_i| - \sum_{1\le i<j\le 6} |A_i\cap A_j| + \cdots + (-1)^{6+1} |A_1\cap \cdots \cap A_6|
$$和根据容斥原理：

=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
=∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯ 有什么区别？
你写的这两个式子，本质上是同一个容斥原理，只是写法不同、针对的对象不同。

1. 第一个式子
∣
⋃
i
=
1
6
A
i
∣
=
∑
i
=
1
6
∣
A
i
∣
−
∑
1
≤
i
<
j
≤
6
∣
A
i
∩
A
j
∣
+
⋯
+
(
−
1
)
6
+
1
∣
A
1
∩
⋯
∩
A
6
∣
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 = 
i=1
∑
6
​
 ∣A 
i
​
 ∣− 
1≤i<j≤6
∑
​
 ∣A 
i
​
 ∩A 
j
​
 ∣+⋯+(−1) 
6+1
 ∣A 
1
​
 ∩⋯∩A 
6
​
 ∣
这个式子直接计算的是：

A
1
∪
A
2
∪
⋯
∪
A
6
A 
1
​
 ∪A 
2
​
 ∪⋯∪A 
6
​
 
也就是6个集合的并集元素个数。

它的特点是：

左边是 
∣
⋃
i
=
1
6
A
i
∣
​
 ⋃ 
i=1
6
​
 A 
i
​
  
​
 

右边从所有单个集合的大小开始加减

第一项是 
+
∑
∣
A
i
∣
+∑∣A 
i
​
 ∣

第二项是 
−
∑
∣
A
i
∩
A
j
∣
−∑∣A 
i
​
 ∩A 
j
​
 ∣

第三项是 
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣

最后一项符号是 
(
−
1
)
6
+
1
(−1) 
6+1
 ，也就是 
(
−
1
)
7
=
−
(−1) 
7
 =−，所以最后是减去六个集合的交集。

2. 第二个式子
你写的第二个式子是：

=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
=∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
这个式子通常出现在补集形式的容斥原理中，即计算：

∣
S
∖
⋃
i
=
1
6
A
i
∣
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 
或者写作：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
​
  
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
  
​
 
其中 
S
S 是全集，
A
i
⊆
S
A 
i
​
 ⊆S。

因为：

∣
S
∖
⋃
i
=
1
6
A
i
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 =∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
把第一个式子代入：

∣
⋃
i
=
1
6
A
i
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯
所以：

∣
S
∖
⋃
i
=
1
6
A
i
∣
=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 =∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
这就是你写的第二个式子。

3. 核心区别
对比项	第一个式子	第二个式子
计算对象	并集 
⋃
A
i
⋃A 
i
​
 	补集 
S
∖
⋃
A
i
S∖⋃A 
i
​
 ，即“不属于任何 
A
i
A 
i
​
 ”的元素
左边	(\left	\bigcup A_i\right	)	(\left	S\setminus \bigcup A_i\right	) 或 (\left	\overline{A_1}\cap\cdots\cap\overline{A_6}\right	)
是否有 (	S	)	没有	有
第一项符号	(+\sum	A_i	)	(-\sum	A_i	)
第二项符号	(-\sum	A_i\cap A_j	)	(+\sum	A_i\cap A_j	)
用途	求至少属于一个集合的元素数	求一个都不属于这些集合的元素数
4. 举例理解
假设全集 
S
S 有 100 个元素，
A
1
,
A
2
,
…
,
A
6
A 
1
​
 ,A 
2
​
 ,…,A 
6
​
  是其中 6 个子集。

第一个式子算的是：至少属于某一个 
A
i
A 
i
​
  的元素有多少个。

第二个式子算的是：6个集合都不属于的元素有多少个。

两者满足：

∣
⋃
i
=
1
6
A
i
∣
+
∣
S
∖
⋃
i
=
1
6
A
i
∣
=
∣
S
∣
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 + 
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 =∣S∣
所以第二个式子也可以由第一个式子移项得到：

∣
S
∖
⋃
i
=
1
6
A
i
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 =∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
5. 一句话总结
第一个式子是并集的容斥公式；
第二个式子是补集（都不属于）的容斥公式。
它们不是矛盾，而是同一原理的两种常见写法，区别只在于：你要算“至少一个发生”还是“一个都不发生”。

选 1 种口味不出现：剩下 5 种口味可选，序列数 
5
10
5 
10
 ，共有 
(
6
1
)
( 
1
6
​
 ) 种选法。

选 2 种口味不出现：剩下 4 种口味可选，序列数 
4
10
4 
10
 ，共有 
(
6
2
)
( 
2
6
​
 ) 种选法。

以此类推。

因此，满足“每种至少出现一次”的序列数为：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10 为什么公式又这么写了
你问的是这个公式：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
为什么容斥原理又写成这种形式？

其实它和前面说的是同一个容斥原理，只是这里换了一个角度：
不是直接算“并集”，而是算“每个口味至少出现一次”的序列数。

1. 问题背景
假设：

有 6 种口味；

要排成长度为 10 的序列；

要求：每种口味至少出现一次。

总的可选序列，如果不加限制，是：

6
10
6 
10
 
但这里面包括了一些口味一次都没出现的情况。
所以要用容斥原理，把“至少有一种口味没出现”的那些情况排除掉。

2. 用“不出现”的角度做容斥
设：

全集 
S
S：所有长度为 10、每个位置有 6 种口味可选的序列，所以 
∣
S
∣
=
6
10
∣S∣=6 
10
 ；

A
i
A 
i
​
 ：第 
i
i 种口味不出现的序列集合。

我们要求的是：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
也就是：6 种口味都至少出现一次。

根据补集容斥公式：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
3. 每一项怎么算？
选 0 种口味不出现
也就是没有限制：

∣
S
∣
=
6
10
∣S∣=6 
10
 
对应：

(
−
1
)
0
(
6
0
)
6
10
(−1) 
0
 ( 
0
6
​
 )6 
10
 
选 1 种口味不出现
比如第 1 种口味不出现，那么每个位置只能从剩下 5 种里选：

5
10
5 
10
 
选哪 1 种不出现，有 
(
6
1
)
( 
1
6
​
 ) 种选法，所以这一项是：

−
(
6
1
)
5
10
−( 
1
6
​
 )5 
10
 
对应：

(
−
1
)
1
(
6
1
)
(
6
−
1
)
10
(−1) 
1
 ( 
1
6
​
 )(6−1) 
10
 
选 2 种口味不出现
比如第 1、2 种口味不出现，那么每个位置只能从剩下 4 种里选：

4
10
4 
10
 
选哪 2 种不出现，有 
(
6
2
)
( 
2
6
​
 ) 种选法，所以这一项是：

+
(
6
2
)
4
10
+( 
2
6
​
 )4 
10
 
对应：

(
−
1
)
2
(
6
2
)
(
6
−
2
)
10
(−1) 
2
 ( 
2
6
​
 )(6−2) 
10
 
一般地
选 
j
j 种口味不出现：

剩下 
6
−
j
6−j 种口味可选；

长度为 10 的序列数是：

(
6
−
j
)
10
(6−j) 
10
 
选哪 
j
j 种口味不出现，有：

(
6
j
)
( 
j
6
​
 )
种选法；

符号是：

(
−
1
)
j
(−1) 
j
 
所以这一项就是：

(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
(−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
把所有 
j
=
0
j=0 到 
6
6 加起来：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
4. 为什么和前面的写法看起来不一样？
前面的公式是：

∣
⋃
i
=
1
6
A
i
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯
那是直接算并集。

而这里要求的是：

每种口味至少出现一次
每种口味至少出现一次
它等于：

∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
其中 
A
i
A 
i
​
  表示“第 
i
i 种口味不出现”。

所以：

∣
S
∣
−
∣
⋃
A
i
∣
=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣S∣− 
​
 ⋃A 
i
​
  
​
 =∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
这就是补集形式的容斥。

然后：

∣
S
∣
=
6
10
∣S∣=6 
10
 

∣
A
i
∣
=
5
10
∣A 
i
​
 ∣=5 
10
 

∣
A
i
∩
A
j
∣
=
4
10
∣A 
i
​
 ∩A 
j
​
 ∣=4 
10
 

∣
A
i
∩
A
j
∩
A
k
∣
=
3
10
∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣=3 
10
 

……

所以最后写成：

6
10
−
(
6
1
)
5
10
+
(
6
2
)
4
10
−
(
6
3
)
3
10
+
⋯
6 
10
 −( 
1
6
​
 )5 
10
 +( 
2
6
​
 )4 
10
 −( 
3
6
​
 )3 
10
 +⋯
也就是：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
5. 注意一个小细节
这个公式里，当 
j
=
6
j=6 时：

(
6
−
6
)
10
=
0
10
(6−6) 
10
 =0 
10
 
通常 
0
10
=
0
0 
10
 =0，所以最后一项其实是 0。
但写成求和形式时仍然保留，因为公式统一。

6. 一句话总结
这个公式不是新的容斥原理，而是：

每种至少出现一次
=
总序列数
−
至少一种不出现的序列数
每种至少出现一次=总序列数−至少一种不出现的序列数
再用容斥原理展开“至少一种不出现”的情况，就得到了：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
其中：

j
j 表示“被强制不出现”的口味种数；

(
6
−
j
)
10
(6−j) 
10
  表示剩下可用的口味形成的序列数；

(
6
j
)
( 
j
6
​
 ) 表示选哪 
j
j 种口味不出现；

(
−
1
)
j
(−1) 
j
  是容斥的加减交替符号。

容斥原理核心的计数规则可以记为一句话: 奇加偶减。

假设被计数的有A、B、C三类，那么，A、B、C类元素个数总和=A类元素个数+B类元素个数+C类元素个数-既是A又是B的元素个数-既是B又是C的元素个数-既是A又是C的元素个数+既是A又是B且是C的元素个数，即A∪B∪C=A+B+C-A∩B-B∩C-A∩C+A∩B∩C，如图1所示。 可是我学的容斥原理是这样的
你学的这个写法完全正确，而且它其实和前面那个 
∑
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
∑(−1) 
j
 ( 
j
6
​
 )(6−j) 
10
  是同一个容斥原理，只是使用场景不同、符号起点不同。

你觉得“怎么又变了一个样子”，核心原因是：

容斥原理有两种常见写法：

直接求并集：奇加偶减；

求补集/“都不发生”：偶加奇减。

下面把它们彻底对齐。

1. 你学的版本：直接求并集
你写的是：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
B
∩
C
∣
−
∣
A
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣
这就是直接求三个集合的并集。

规则是：

单个集合：加；

两两交集：减；

三个交集：加。

所以叫：

奇加偶减

更准确地说：

交集的集合个数是奇数：加；

交集的集合个数是偶数：减。

比如：

1个集合：加；

2个集合交集：减；

3个集合交集：加；

4个集合交集：减；

以此类推。

所以对 
n
n 个集合：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
1
≤
i
1
<
⋯
<
i
k
≤
n
∣
A
i
1
∩
⋯
∩
A
i
k
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
1≤i 
1
​
 <⋯<i 
k
​
 ≤n
∑
​
 ∣A 
i 
1
​
 
​
 ∩⋯∩A 
i 
k
​
 
​
 ∣
注意这里符号是：

(
−
1
)
k
+
1
(−1) 
k+1
 
所以：

k
=
1
k=1：
(
−
1
)
2
=
+
(−1) 
2
 =+，加；

k
=
2
k=2：
(
−
1
)
3
=
−
(−1) 
3
 =−，减；

k
=
3
k=3：
(
−
1
)
4
=
+
(−1) 
4
 =+，加。

这就是你熟悉的“奇加偶减”。

2. 前面那个公式：求“每种都至少出现一次”
前面那个公式是：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
它求的是：

6种口味每种至少出现一次的序列数。

这等于：

总序列数
−
至少有一种口味不出现的序列数
总序列数−至少有一种口味不出现的序列数
设：

S
S：所有序列，
∣
S
∣
=
6
10
∣S∣=6 
10
 ；

A
i
A 
i
​
 ：第 
i
i 种口味不出现的序列集合。

我们要求的是：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
根据补集容斥：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
而：

∣
⋃
i
=
1
6
A
i
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯
所以：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
这里符号变成了：

∣
S
∣
∣S∣：加；

1个 
A
i
A 
i
​
 ：减；

2个 
A
i
A 
i
​
  交集：加；

3个 
A
i
A 
i
​
  交集：减。

看起来就像“偶加奇减”，和你熟悉的“奇加偶减”相反。

3. 为什么符号反了？
因为：

你熟悉的版本求的是：至少发生一个：
⋃
A
i
⋃A 
i
​
 ；

前面那个公式求的是：一个都不发生：
A
1
‾
∩
⋯
∩
A
n
‾
A 
1
​
 
​
 ∩⋯∩ 
A 
n
​
 
​
 。

两者关系是：

一个都不发生
=
总数
−
至少发生一个
一个都不发生=总数−至少发生一个
所以：

∣
A
1
‾
∩
⋯
∩
A
n
‾
∣
=
∣
S
∣
−
∣
⋃
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
n
​
 
​
 ∣=∣S∣−∣⋃A 
i
​
 ∣
把并集容斥代进去，就会导致所有符号整体反过来。

也就是说：

直接求并集：奇加偶减；

求补集/都不发生：偶加奇减。

它们不是两个原理，而是同一个原理的两种方向。

4. 用你的 
A
,
B
,
C
A,B,C 例子对照
你熟悉的公式：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
B
∩
C
∣
−
∣
A
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣
如果要求：

∣
A
‾
∩
B
‾
∩
C
‾
∣
∣ 
A
 ∩ 
B
 ∩ 
C
 ∣
也就是“既不属于A，也不属于B，也不属于C”的元素个数。

设全集为 
S
S，则：

∣
A
‾
∩
B
‾
∩
C
‾
∣
=
∣
S
∣
−
∣
A
∪
B
∪
C
∣
∣ 
A
 ∩ 
B
 ∩ 
C
 ∣=∣S∣−∣A∪B∪C∣
代入：

=
∣
S
∣
−
∣
A
∣
−
∣
B
∣
−
∣
C
∣
+
∣
A
∩
B
∣
+
∣
B
∩
C
∣
+
∣
A
∩
C
∣
−
∣
A
∩
B
∩
C
∣
=∣S∣−∣A∣−∣B∣−∣C∣+∣A∩B∣+∣B∩C∣+∣A∩C∣−∣A∩B∩C∣
你看，符号变成了：

∣
S
∣
∣S∣：加；

单个集合：减；

两两交集：加；

三个交集：减。

这就是前面那个公式的符号来源。

5. 两种写法总结
写法一：求并集
∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
规则：

奇加偶减

写法二：求补集，即“都不发生”
∣
⋂
i
=
1
n
A
i
‾
∣
=
∑
k
=
0
n
(
−
1
)
k
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋂
n
​
  
A 
i
​
 
​
  
​
 = 
k=0
∑
n
​
 (−1) 
k
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
其中 
A
0
=
S
A 
0
​
 =S，也就是 
k
=
0
k=0 时是全集。

规则：

偶加奇减

或者更直观地写：

∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
6. 一句话记住
你学的：

A
∪
B
∪
C
=
A
+
B
+
C
−
A
∩
B
−
B
∩
C
−
A
∩
C
+
A
∩
B
∩
C
A∪B∪C=A+B+C−A∩B−B∩C−A∩C+A∩B∩C
是求并集，规则是：

奇加偶减。

而前面那个：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
是求“每种都至少出现一次”，它等价于：

总数
−
至少一种不出现
总数−至少一种不出现
所以是补集容斥，符号整体反过来。

两者本质完全一样，只是：

求并集用奇加偶减；求补集用偶加奇减。

你并没有学错，只是遇到了同一个原理的另一种写法。

不是我的意思是，怎么从容斥原理核心的计数规则可以记为一句话: 奇加偶减。

假设被计数的有A、B、C三类，那么，A、B、C类元素个数总和=A类元素个数+B类元素个数+C类元素个数-既是A又是B的元素个数-既是B又是C的元素个数-既是A又是C的元素个数+既是A又是B且是C的元素个数，即A∪B∪C=A+B+C-A∩B-B∩C-A∩C+A∩B∩C，如图1所示。 到你的公式​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
你想问的是：

我熟悉的是

A
∪
B
∪
C
=
A
+
B
+
C
−
A
∩
B
−
B
∩
C
−
A
∩
C
+
A
∩
B
∩
C
A∪B∪C=A+B+C−A∩B−B∩C−A∩C+A∩B∩C
这个具体式子，
它怎么变成

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
这种抽象写法的？

下面我一步步把它对应起来。

1. 先把 
A
∪
B
∪
C
A∪B∪C 的公式写清楚
你熟悉的公式是：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
B
∩
C
∣
−
∣
A
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣
它有三类项：

单个集合：
∣
A
∣
,
∣
B
∣
,
∣
C
∣
∣A∣,∣B∣,∣C∣

两两交集：
∣
A
∩
B
∣
,
∣
B
∩
C
∣
,
∣
A
∩
C
∣
∣A∩B∣,∣B∩C∣,∣A∩C∣

三个集合的交集：
∣
A
∩
B
∩
C
∣
∣A∩B∩C∣

符号分别是：

单个集合：加；

两两交集：减；

三个交集：加。

这就是“奇加偶减”。

2. 抽象写法里的 
k
k 是什么？
抽象写法：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
这里：

k
k 表示“交集的集合个数”；

I
I 是一个下标集合，表示选了哪几个集合；

∣
I
∣
=
k
∣I∣=k 表示这个下标集合里有 
k
k 个元素；

A
I
A 
I
​
  表示这些集合的交集。

例如：

当 
k
=
1
k=1：表示选 1 个集合，就是 
∣
A
i
∣
∣A 
i
​
 ∣；

当 
k
=
2
k=2：表示选 2 个集合，就是 
∣
A
i
∩
A
j
∣
∣A 
i
​
 ∩A 
j
​
 ∣；

当 
k
=
3
k=3：表示选 3 个集合，就是 
∣
A
i
∩
A
j
∩
A
k
∣
∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣。

3. 用 
A
,
B
,
C
A,B,C 三个集合对应
现在令 
n
=
3
n=3，三个集合是：

A
1
=
A
,
A
2
=
B
,
A
3
=
C
A 
1
​
 =A,A 
2
​
 =B,A 
3
​
 =C
那么：

∣
⋃
i
=
1
3
A
i
∣
=
∣
A
∪
B
∪
C
∣
​
  
i=1
⋃
3
​
 A 
i
​
  
​
 =∣A∪B∪C∣
抽象公式变成：

∣
A
∪
B
∪
C
∣
=
∑
k
=
1
3
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
∣A∪B∪C∣= 
k=1
∑
3
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
我们一项一项展开。

当 
k
=
1
k=1
(
−
1
)
1
+
1
=
(
−
1
)
2
=
+
(−1) 
1+1
 =(−1) 
2
 =+
∑
∣
I
∣
=
1
∣
A
I
∣
=
∣
A
1
∣
+
∣
A
2
∣
+
∣
A
3
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
∣I∣=1
∑
​
 ∣A 
I
​
 ∣=∣A 
1
​
 ∣+∣A 
2
​
 ∣+∣A 
3
​
 ∣=∣A∣+∣B∣+∣C∣
所以这一部分就是：

+
∣
A
∣
+
∣
B
∣
+
∣
C
∣
+∣A∣+∣B∣+∣C∣
当 
k
=
2
k=2
(
−
1
)
2
+
1
=
(
−
1
)
3
=
−
(−1) 
2+1
 =(−1) 
3
 =−
∑
∣
I
∣
=
2
∣
A
I
∣
=
∣
A
1
∩
A
2
∣
+
∣
A
1
∩
A
3
∣
+
∣
A
2
∩
A
3
∣
∣I∣=2
∑
​
 ∣A 
I
​
 ∣=∣A 
1
​
 ∩A 
2
​
 ∣+∣A 
1
​
 ∩A 
3
​
 ∣+∣A 
2
​
 ∩A 
3
​
 ∣
也就是：

∣
A
∩
B
∣
+
∣
A
∩
C
∣
+
∣
B
∩
C
∣
∣A∩B∣+∣A∩C∣+∣B∩C∣
所以这一部分就是：

−
∣
A
∩
B
∣
−
∣
A
∩
C
∣
−
∣
B
∩
C
∣
−∣A∩B∣−∣A∩C∣−∣B∩C∣
当 
k
=
3
k=3
(
−
1
)
3
+
1
=
(
−
1
)
4
=
+
(−1) 
3+1
 =(−1) 
4
 =+
∑
∣
I
∣
=
3
∣
A
I
∣
=
∣
A
1
∩
A
2
∩
A
3
∣
=
∣
A
∩
B
∩
C
∣
∣I∣=3
∑
​
 ∣A 
I
​
 ∣=∣A 
1
​
 ∩A 
2
​
 ∩A 
3
​
 ∣=∣A∩B∩C∣
所以这一部分就是：

+
∣
A
∩
B
∩
C
∣
+∣A∩B∩C∣
4. 合起来
把三部分加起来：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
A
∩
C
∣
−
∣
B
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣
这正好就是你熟悉的公式。

5. 所以抽象公式在说什么？
∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
翻译成人话就是：

把所有集合的并集，拆成：

先加所有 1 个集合的大小；

再减所有 2 个集合交集的大小；

再加所有 3 个集合交集的大小；

再减所有 4 个集合交集的大小；

……

一直做到 
n
n 个集合的交集。

其中：

k
k 表示“这次取几个集合的交集”；

∑
∣
I
∣
=
k
∑ 
∣I∣=k
​
  表示“把所有选 
k
k 个集合的方式都加起来”；

(
−
1
)
k
+
1
(−1) 
k+1
  控制符号：

k
=
1
k=1：加；

k
=
2
k=2：减；

k
=
3
k=3：加；

k
=
4
k=4：减。

所以它就是“奇加偶减”的符号化写法。

6. 为什么用这种抽象写法？
因为当集合很多时，比如 6 个、10 个、
n
n 个，你不可能把每一项都写出来。

比如 6 个集合：

∣
A
1
∪
⋯
∪
A
6
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
+
∣
A
1
∩
⋯
∩
A
6
∣
∣A 
1
​
 ∪⋯∪A 
6
​
 ∣=∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯+∣A 
1
​
 ∩⋯∩A 
6
​
 ∣
这已经很长了。

如果有 
n
n 个集合，就更长。

所以数学家把它压缩成：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
它只是把：

所有单个集合；

所有两两交集；

所有三三交集；

……

用统一的符号表示出来。

7. 一句话对应
你熟悉的：

A
∪
B
∪
C
=
A
+
B
+
C
−
A
∩
B
−
B
∩
C
−
A
∩
C
+
A
∩
B
∩
C
A∪B∪C=A+B+C−A∩B−B∩C−A∩C+A∩B∩C
就是抽象公式在 
n
=
3
n=3 时的展开。

抽象公式只是把：

A
,
B
,
C
A,B,C 写成 
A
1
,
A
2
,
A
3
A 
1
​
 ,A 
2
​
 ,A 
3
​
 ；

“单个集合”写成 
k
=
1
k=1；

“两两交集”写成 
k
=
2
k=2；

“三个交集”写成 
k
=
3
k=3；

符号“奇加偶减”写成 
(
−
1
)
k
+
1
(−1) 
k+1
 。

所以它并不是另一个新公式，而是你熟悉的容斥公式的通用简写版。

然后呢？又怎么和j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10 对应？
好，现在把中间这一步补上：

你熟悉的容斥原理是：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
A
∩
C
∣
−
∣
B
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣
它的抽象写法是：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
现在要把它变成：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
关键有 3 个转换：

从“求并集”变成“求补集”；

从 
k
k 变成 
j
j；

把 
∣
A
I
∣
∣A 
I
​
 ∣ 具体算成 
(
6
−
j
)
10
(6−j) 
10
 。

1. 先明确问题
题目是：

有 6 种口味，排成长度为 10 的序列，要求每种口味至少出现一次。

设全集：

S
=
{
所有长度为10、每个位置有6种口味可选的序列
}
S={所有长度为10、每个位置有6种口味可选的序列}
所以：

∣
S
∣
=
6
10
∣S∣=6 
10
 
设：

A
i
=
{
第 
i
 种口味一次都不出现的序列
}
A 
i
​
 ={第 i 种口味一次都不出现的序列}
我们要求的是：

每种口味至少出现一次
每种口味至少出现一次
也就是：

没有任何一种口味不出现
没有任何一种口味不出现
即：

A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 
所以要求：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
2. 从并集容斥变成补集容斥
你熟悉的并集容斥是：

∣
A
1
∪
A
2
∪
⋯
∪
A
6
∣
=
∑
k
=
1
6
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
∣A 
1
​
 ∪A 
2
​
 ∪⋯∪A 
6
​
 ∣= 
k=1
∑
6
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
这里 
A
I
A 
I
​
  表示选中的那些 
A
i
A 
i
​
  的交集。

例如：

k
=
1
k=1：
∣
A
i
∣
∣A 
i
​
 ∣

k
=
2
k=2：
∣
A
i
∩
A
j
∣
∣A 
i
​
 ∩A 
j
​
 ∣

k
=
3
k=3：
∣
A
i
∩
A
j
∩
A
ℓ
∣
∣A 
i
​
 ∩A 
j
​
 ∩A 
ℓ
​
 ∣

这个并集表示的是：

A
1
∪
A
2
∪
⋯
∪
A
6
=
至少有一种口味不出现
A 
1
​
 ∪A 
2
​
 ∪⋯∪A 
6
​
 =至少有一种口味不出现
而我们要求的是：

每种口味至少出现一次
=
一种口味都不不出现
每种口味至少出现一次=一种口味都不不出现
也就是：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
它和并集的关系是：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
A
1
∪
⋯
∪
A
6
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣−∣A 
1
​
 ∪⋯∪A 
6
​
 ∣
所以：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
把并集容斥代进去：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∑
k
=
1
6
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣− 
k=1
∑
6
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
注意：

−
(
−
1
)
k
+
1
=
(
−
1
)
k
−(−1) 
k+1
 =(−1) 
k
 
所以：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
+
∑
k
=
1
6
(
−
1
)
k
∑
∣
I
∣
=
k
∣
A
I
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣+ 
k=1
∑
6
​
 (−1) 
k
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
而 
∣
S
∣
∣S∣ 可以看成 
k
=
0
k=0 的项：

∣
S
∣
=
(
−
1
)
0
(
6
0
)
∣
S
∣
∣S∣=(−1) 
0
 ( 
0
6
​
 )∣S∣
所以统一写成：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∑
k
=
0
6
(
−
1
)
k
∑
∣
I
∣
=
k
∣
A
I
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣= 
k=0
∑
6
​
 (−1) 
k
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
这里：

k
=
0
k=0：
∣
S
∣
∣S∣

k
=
1
k=1：
−
∑
∣
A
i
∣
−∑∣A 
i
​
 ∣

k
=
2
k=2：
+
∑
∣
A
i
∩
A
j
∣
+∑∣A 
i
​
 ∩A 
j
​
 ∣

k
=
3
k=3：
−
∑
∣
A
i
∩
A
j
∩
A
ℓ
∣
−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
ℓ
​
 ∣

……

这就是补集容斥。

3. 把 
k
k 换成 
j
j
这只是字母换了一下：

k
→
j
k→j
所以：

∑
k
=
0
6
(
−
1
)
k
∑
∣
I
∣
=
k
∣
A
I
∣
=
∑
j
=
0
6
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
k=0
∑
6
​
 (−1) 
k
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣= 
j=0
∑
6
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
其中 
j
j 表示：

被强制“不出现”的口味种数。

4. 算 
∑
∣
I
∣
=
j
∣
A
I
∣
∑ 
∣I∣=j
​
 ∣A 
I
​
 ∣
现在固定 
j
j。

意思是：选出 
j
j 种口味，强制它们不出现。

比如选出 
j
j 种口味不出现。

那么每个位置还能选的口味数就是：

6
−
j
6−j
序列长度是 10，所以这些位置可以形成的序列数是：

(
6
−
j
)
10
(6−j) 
10
 
也就是说，对于任意一个固定的、大小为 
j
j 的下标集合 
I
I：

∣
A
I
∣
=
(
6
−
j
)
10
∣A 
I
​
 ∣=(6−j) 
10
 
那这样的下标集合 
I
I 有多少个？

就是从 6 种口味里选 
j
j 种：

(
6
j
)
( 
j
6
​
 )
所以：

∑
∣
I
∣
=
j
∣
A
I
∣
=
(
6
j
)
(
6
−
j
)
10
∣I∣=j
∑
​
 ∣A 
I
​
 ∣=( 
j
6
​
 )(6−j) 
10
 
5. 合起来
于是：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∑
j
=
0
6
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣= 
j=0
∑
6
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
把刚刚算的代入：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣= 
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
这就是：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
6. 展开看更清楚
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
展开：

=
(
6
0
)
6
10
−
(
6
1
)
5
10
+
(
6
2
)
4
10
−
(
6
3
)
3
10
+
(
6
4
)
2
10
−
(
6
5
)
1
10
+
(
6
6
)
0
10
=( 
0
6
​
 )6 
10
 −( 
1
6
​
 )5 
10
 +( 
2
6
​
 )4 
10
 −( 
3
6
​
 )3 
10
 +( 
4
6
​
 )2 
10
 −( 
5
6
​
 )1 
10
 +( 
6
6
​
 )0 
10
 
对应含义：

(
6
0
)
6
10
( 
0
6
​
 )6 
10
 ：不强制任何口味不出现，总数 
6
10
6 
10
 ；

−
(
6
1
)
5
10
−( 
1
6
​
 )5 
10
 ：减去强制 1 种口味不出现的情况；

+
(
6
2
)
4
10
+( 
2
6
​
 )4 
10
 ：加回强制 2 种口味不出现的情况；

−
(
6
3
)
3
10
−( 
3
6
​
 )3 
10
 ：减去强制 3 种口味不出现的情况；

+
(
6
4
)
2
10
+( 
4
6
​
 )2 
10
 ：加回强制 4 种口味不出现的情况；

−
(
6
5
)
1
10
−( 
5
6
​
 )1 
10
 ：减去强制 5 种口味不出现的情况；

+
(
6
6
)
0
10
+( 
6
6
​
 )0 
10
 ：加回强制 6 种口味不出现的情况，但这是 0。

所以最终就是：

6
10
−
6
⋅
5
10
+
15
⋅
4
10
−
20
⋅
3
10
+
15
⋅
2
10
−
6
⋅
1
10
+
0
6 
10
 −6⋅5 
10
 +15⋅4 
10
 −20⋅3 
10
 +15⋅2 
10
 −6⋅1 
10
 +0
7. 和“奇加偶减”的关系
你熟悉的并集容斥：

∣
A
1
∪
⋯
∪
A
6
∣
=
∑
k
=
1
6
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
∣A 
1
​
 ∪⋯∪A 
6
​
 ∣= 
k=1
∑
6
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
符号是：

k
=
1
k=1：加；

k
=
2
k=2：减；

k
=
3
k=3：加；

……

这是“奇加偶减”。

但我们现在求的是：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
A
1
∪
⋯
∪
A
6
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣−∣A 
1
​
 ∪⋯∪A 
6
​
 ∣
所以整体符号反过来了：

∑
j
=
0
6
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
j=0
∑
6
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
符号是：

j
=
0
j=0：加；

j
=
1
j=1：减；

j
=
2
j=2：加；

j
=
3
j=3：减；

……

看起来像“偶加奇减”，但本质仍然是容斥原理，只是求的是补集。

8. 一句话总结
从容斥原理到你最后看到的公式，路线是：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
⋯
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−⋯+∣A∩B∩C∣
推广成：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
然后求补集：

∣
A
1
‾
∩
⋯
∩
A
n
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
n
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
n
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 
得到：

=
∑
j
=
0
n
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
= 
j=0
∑
n
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
最后对于“6 种口味、长度 10、每种至少出现一次”：

∣
A
I
∣
=
(
6
−
j
)
10
∣A 
I
​
 ∣=(6−j) 
10
 
且大小为 
j
j 的下标集合有：

(
6
j
)
( 
j
6
​
 )
个，所以：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
这就是你看到的最终公式。

抛开容斥原理的话，有没有更加易懂的方法得到结果？
有。抛开容斥原理，这个问题也可以从“先分组，再排列”或者“指数型生成函数”的角度理解。不过要提前说明：对于“每种口味至少出现一次”这种限制，容斥原理仍然是最直接、最标准的方法。其他方法要么本质等价，要么更复杂。

下面给你几种更直观的理解方式。

方法一：先分组，再分配位置
问题：

6 种口味，排成长度 10 的序列，每种口味至少出现一次。

因为 10 个位置要分给 6 种口味，且每种至少 1 个，所以本质上是在问：

把 10 个位置分成 6 个非空组，每组对应一种口味，然后给这 6 组分配 6 种不同的口味。

第一步：把 10 个位置分成 6 个非空组
这相当于求：

x
1
+
x
2
+
⋯
+
x
6
=
10
,
x
i
≥
1
x 
1
​
 +x 
2
​
 +⋯+x 
6
​
 =10,x 
i
​
 ≥1
的正整数解个数。

令 
y
i
=
x
i
−
1
≥
0
y 
i
​
 =x 
i
​
 −1≥0，则：

y
1
+
⋯
+
y
6
=
4
y 
1
​
 +⋯+y 
6
​
 =4
非负整数解个数是：

(
4
+
6
−
1
6
−
1
)
=
(
9
5
)
=
126
( 
6−1
4+6−1
​
 )=( 
5
9
​
 )=126
但这里只是分了“组的大小”，还没有指定哪个组对应哪种口味，也没有确定具体哪些位置属于哪个组。

第二步：给 6 个组分配 6 种口味
因为 6 种口味都要出现，且每组对应一种口味，所以有：

6
!
6!
种分配方式。

第三步：确定每个位置具体属于哪个组
如果组的大小已经确定，比如大小分别是 
x
1
,
…
,
x
6
x 
1
​
 ,…,x 
6
​
 ，那么把 10 个具体位置分给这些组，方法数是：

(
10
x
1
,
x
2
,
…
,
x
6
)
=
10
!
x
1
!
x
2
!
⋯
x
6
!
( 
x 
1
​
 ,x 
2
​
 ,…,x 
6
​
 
10
​
 )= 
x 
1
​
 !x 
2
​
 !⋯x 
6
​
 !
10!
​
 
所以总数是：

∑
x
1
+
⋯
+
x
6
=
10
x
i
≥
1
10
!
x
1
!
x
2
!
⋯
x
6
!
⋅
6
!
x 
1
​
 +⋯+x 
6
​
 =10
x 
i
​
 ≥1
​
 
∑
​
  
x 
1
​
 !x 
2
​
 !⋯x 
6
​
 !
10!
​
 ⋅6!
但注意：这里其实把“先分组再分配口味”和“直接给每个位置选口味”重复计算了。更简洁的写法是：

∑
x
1
+
⋯
+
x
6
=
10
x
i
≥
1
10
!
x
1
!
x
2
!
⋯
x
6
!
x 
1
​
 +⋯+x 
6
​
 =10
x 
i
​
 ≥1
​
 
∑
​
  
x 
1
​
 !x 
2
​
 !⋯x 
6
​
 !
10!
​
 
这个和就是：

6
10
−
(
6
1
)
5
10
+
(
6
2
)
4
10
−
⋯
6 
10
 −( 
1
6
​
 )5 
10
 +( 
2
6
​
 )4 
10
 −⋯
所以这个方法最后还是绕回容斥。它只是从“分组”角度理解，并没有真正避开容斥。

方法二：指数型生成函数
这是组合数学中处理“序列计数”的常用工具。

对于一种口味，它在序列中出现的次数可以是：

0
,
1
,
2
,
…
0,1,2,…
但我们要求每种口味至少出现一次，所以每种口味的出现次数只能是：

1
,
2
,
3
,
…
1,2,3,…
对应的指数型生成函数是：

e
x
−
1
e 
x
 −1
因为有 6 种口味，且它们相互独立，所以总的指数型生成函数是：

(
e
x
−
1
)
6
(e 
x
 −1) 
6
 
我们要的是长度为 10 的序列数，也就是 
x
10
x 
10
  的系数乘以 
10
!
10!。

展开：

(
e
x
−
1
)
6
=
∑
j
=
0
6
(
6
j
)
e
(
6
−
j
)
x
(
−
1
)
j
(e 
x
 −1) 
6
 = 
j=0
∑
6
​
 ( 
j
6
​
 )e 
(6−j)x
 (−1) 
j
 
所以：

(
e
x
−
1
)
6
=
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
e
(
6
−
j
)
x
(e 
x
 −1) 
6
 = 
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )e 
(6−j)x
 
而：

e
(
6
−
j
)
x
=
∑
n
=
0
∞
(
6
−
j
)
n
n
!
x
n
e 
(6−j)x
 = 
n=0
∑
∞
​
  
n!
(6−j) 
n
 
​
 x 
n
 
所以 
x
10
x 
10
  的系数是：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
10
!
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 ) 
10!
(6−j) 
10
 
​
 
乘以 
10
!
10! 得到：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
你看，又回到了同一个公式。

指数型生成函数看起来很高级，但它展开后本质上还是容斥。

方法三：递推 / 动态规划
设：

f
(
n
,
k
)
=
用 
k
 种口味排成长度 
n
 的序列，且每种口味至少出现一次的个数
f(n,k)=用 k 种口味排成长度 n 的序列，且每种口味至少出现一次的个数
我们要求 
f
(
10
,
6
)
f(10,6)。

考虑最后一个位置：

如果最后一个位置用的是已经出现过的口味，那么前 
n
−
1
n−1 个位置已经用了 
k
k 种口味，且每种至少一次。最后一个位置可以从这 
k
k 种里选，所以贡献是：

k
⋅
f
(
n
−
1
,
k
)
k⋅f(n−1,k)
如果最后一个位置用的是之前没出现过的口味，那么前 
n
−
1
n−1 个位置用了 
k
−
1
k−1 种口味，且每种至少一次。最后这个新口味可以是剩下的 
6
−
(
k
−
1
)
6−(k−1) 种中的一种？这里要小心：我们是在固定“有 
k
k 种口味出现”的情况下递推。

更标准的递推是：

f
(
n
,
k
)
=
k
⋅
f
(
n
−
1
,
k
)
+
k
⋅
f
(
n
−
1
,
k
−
1
)
f(n,k)=k⋅f(n−1,k)+k⋅f(n−1,k−1)
但这个递推对应的是“从 
k
k 种口味中选，每种至少一次”，而不是“6 种口味中恰有 
k
k 种出现”。

如果要求“6 种口味都至少出现一次”，可以设：

g
(
n
,
k
)
=
用 
k
 种指定口味排成长度 
n
 的序列，每种至少出现一次
g(n,k)=用 k 种指定口味排成长度 n 的序列，每种至少出现一次
则：

g
(
n
,
k
)
=
k
⋅
g
(
n
−
1
,
k
)
+
k
⋅
g
(
n
−
1
,
k
−
1
)
g(n,k)=k⋅g(n−1,k)+k⋅g(n−1,k−1)
初始：

g
(
0
,
0
)
=
1
,
g
(
n
,
0
)
=
0
 
(
n
>
0
)
g(0,0)=1,g(n,0)=0 (n>0)
计算 
g
(
10
,
6
)
g(10,6) 可以得到同样的结果。

这个递推可以手算或用程序算，但最终数值和容斥公式一样。

方法四：直接理解“至少一次”的困难
其实你可以反过来想：

总序列数：
6
10
6 
10
 

减去至少一种口味不出现的；

但减去的时候，两种口味同时不出现的情况被多减了；

再加回来；

三种口味同时不出现的情况又被多加回来了；

再减去；

……

这就是容斥。

如果不允许用容斥，那就只能用生成函数或递推，而它们最后还是会导出同一个求和式。

结论
抛开容斥原理，这个问题可以用：

分组再分配：直观，但最后仍然绕回容斥；

指数型生成函数：形式简洁，但展开后还是同一个公式；

递推 / 动态规划：可以算出结果，但不如容斥公式直接。

所以，对于“6 种口味排长度 10，每种至少出现一次”这个问题：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
这个公式虽然来自容斥，但它也是生成函数和递推方法的自然结果。
容斥原理在这里不是唯一方法，但确实是最简洁、最标准的方法。

斯特林数就是容斥原理 的衍生吗
可以这么理解，但更准确地说：

第二类斯特林数与容斥原理关系非常密切，但它本身不是“容斥原理的衍生”，而是一个独立的组合数。只是它的显式公式可以通过容斥原理得到。

下面把关系讲清楚。

1. 第二类斯特林数是什么？
第二类斯特林数：

S
(
n
,
k
)
=
{
n
k
}
S(n,k)={ 
n
k
​
 }
表示：

把 
n
n 个不同元素分成 
k
k 个非空、不区分顺序的集合，有多少种分法。

例如：

S
(
4
,
2
)
=
7
S(4,2)=7
意思是把 4 个不同元素分成 2 个非空子集，有 7 种分法。

2. 它和“每种至少出现一次”的问题有什么关系？
你的问题：

6 种口味，排成长度 10 的序列，每种口味至少出现一次。

可以这样想：

先把 10 个位置分成 6 个非空组；

再把这 6 个组分配给 6 种不同的口味。

第一步就是把 10 个不同的位置分成 6 个非空、不区分顺序的组，方法数正是：

S
(
10
,
6
)
S(10,6)
第二步：因为 6 种口味是不同的，所以给这 6 个组分配口味，有：

6
!
6!
种方法。

所以答案也可以写成：

6
!
 
S
(
10
,
6
)
6!S(10,6)
而它和容斥公式的关系是：

6
!
 
S
(
10
,
6
)
=
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
6!S(10,6)= 
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
这就是同一个数的两种表达。

3. 第二类斯特林数的显式公式
第二类斯特林数有一个著名公式：

S
(
n
,
k
)
=
1
k
!
∑
j
=
0
k
(
−
1
)
j
(
k
j
)
(
k
−
j
)
n
S(n,k)= 
k!
1
​
  
j=0
∑
k
​
 (−1) 
j
 ( 
j
k
​
 )(k−j) 
n
 
这个公式就是用容斥原理推出来的。

它的含义是：

先允许某些组为空；

用容斥把“有空组”的情况排除掉；

最后除以 
k
!
k!，因为 
k
k 个组是不区分顺序的。

所以：

S
(
n
,
k
)
=
1
k
!
∑
j
=
0
k
(
−
1
)
j
(
k
j
)
(
k
−
j
)
n
S(n,k)= 
k!
1
​
  
j=0
∑
k
​
 (−1) 
j
 ( 
j
k
​
 )(k−j) 
n
 
这个公式本身确实来自容斥。

4. 那么，斯特林数是容斥的衍生吗？
不能简单说“斯特林数就是容斥的衍生”，因为：

从定义上看
第二类斯特林数一开始是作为：

把 
n
n 个不同元素分成 
k
k 个非空子集的方法数

定义的。

这个定义本身不依赖容斥。

从计算上看
它的显式公式：

S
(
n
,
k
)
=
1
k
!
∑
j
=
0
k
(
−
1
)
j
(
k
j
)
(
k
−
j
)
n
S(n,k)= 
k!
1
​
  
j=0
∑
k
​
 (−1) 
j
 ( 
j
k
​
 )(k−j) 
n
 
确实可以用容斥原理推出来。

所以更准确的说法是：

第二类斯特林数是一个独立的组合数；它的显式计算公式可以用容斥原理得到。

不是“斯特林数 = 容斥”，而是：

容斥原理是推导斯特林数显式公式的一种工具。

5. 和你那个公式的对应
你的公式：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
可以改写成：

6
!
⋅
1
6
!
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
6!⋅ 
6!
1
​
  
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
而：

1
6
!
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
=
S
(
10
,
6
)
6!
1
​
  
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 =S(10,6)
所以：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
=
6
!
 
S
(
10
,
6
)
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 =6!S(10,6)
也就是说：

你的容斥公式算的是“6 种口味都出现的序列数”；

它等于“先把 10 个位置分成 6 个非空组，再分配 6 种口味”；

而“分成 6 个非空组”的方法数就是 
S
(
10
,
6
)
S(10,6)；

所以答案就是 
6
!
 
S
(
10
,
6
)
6!S(10,6)。

6. 第一类斯特林数呢？
第一类斯特林数：

[
n
k
]
[ 
n
k
​
 ]
表示把 
n
n 个不同元素排成 
k
k 个循环排列的方法数。

它也有显式公式，但通常不像第二类那样直接由容斥给出。它更多和上升/下降阶乘、生成函数有关。

所以：

第二类斯特林数和容斥关系非常直接；

第一类斯特林数和容斥关系没那么直接。

7. 一句话总结
第二类斯特林数 
S
(
n
,
k
)
S(n,k) 本身是一个独立的组合数，表示把 
n
n 个不同元素分成 
k
k 个非空子集的方法数。
它的显式公式：

S
(
n
,
k
)
=
1
k
!
∑
j
=
0
k
(
−
1
)
j
(
k
j
)
(
k
−
j
)
n
S(n,k)= 
k!
1
​
  
j=0
∑
k
​
 (−1) 
j
 ( 
j
k
​
 )(k−j) 
n
 
可以用容斥原理推导出来。
所以，容斥原理是计算斯特林数的一种重要工具，但斯特林数并不是“容斥原理的衍生”，而是一个独立的组合对象。

二项式定理就是第一斯特林数吗
不是。二项式定理不是第一类斯特林数，它们完全是两个不同的东西。

不过它们之间确实有一点联系，容易混淆。下面分清。

1. 二项式定理是什么？
二项式定理是：

(
x
+
y
)
n
=
∑
k
=
0
n
(
n
k
)
x
n
−
k
y
k
(x+y) 
n
 = 
k=0
∑
n
​
 ( 
k
n
​
 )x 
n−k
 y 
k
 
其中：

(
n
k
)
=
n
!
k
!
(
n
−
k
)
!
( 
k
n
​
 )= 
k!(n−k)!
n!
​
 
叫二项式系数。

例如：

(
x
+
y
)
3
=
x
3
+
3
x
2
y
+
3
x
y
2
+
y
3
(x+y) 
3
 =x 
3
 +3x 
2
 y+3xy 
2
 +y 
3
 
二项式系数是：

1
,
3
,
3
,
1
1,3,3,1
它表示的是：

从 
n
n 个东西里选 
k
k 个的方法数。

2. 第一类斯特林数是什么？
第一类斯特林数记作：

[
n
k
]
[ 
n
k
​
 ]
它表示：

把 
n
n 个不同元素排成 
k
k 个循环排列的方法数。

例如：

[
4
2
]
=
11
[ 
4
2
​
 ]=11
意思是把 4 个不同元素分成 2 个循环排列，有 11 种方法。

它和上升阶乘有关：

x
n
‾
=
x
(
x
+
1
)
(
x
+
2
)
⋯
(
x
+
n
−
1
)
=
∑
k
=
0
n
[
n
k
]
x
k
x 
n
 
 =x(x+1)(x+2)⋯(x+n−1)= 
k=0
∑
n
​
 [ 
n
k
​
 ]x 
k
 
也就是说：

上升阶乘展开后，系数就是第一类斯特林数。

例如：

x
(
x
+
1
)
(
x
+
2
)
=
x
3
+
3
x
2
+
2
x
x(x+1)(x+2)=x 
3
 +3x 
2
 +2x
所以：

[
3
3
]
=
1
,
[
3
2
]
=
3
,
[
3
1
]
=
2
[ 
3
3
​
 ]=1,[ 
3
2
​
 ]=3,[ 
3
1
​
 ]=2
3. 二项式系数和第一类斯特林数的区别
对比项	二项式系数 
(
n
k
)
( 
k
n
​
 )	第一类斯特林数 
[
n
k
]
[ 
n
k
​
 ]
来自	
(
x
+
y
)
n
(x+y) 
n
 	
x
(
x
+
1
)
⋯
(
x
+
n
−
1
)
x(x+1)⋯(x+n−1)
组合意义	从 
n
n 个里选 
k
k 个	把 
n
n 个元素排成 
k
k 个循环排列
生成函数	
(
1
+
x
)
n
(1+x) 
n
 	
x
n
‾
x 
n
 
 
递推	帕斯卡三角	有自己递推
是否相同	否	否
所以：

二项式定理对应的是二项式系数，不是第一类斯特林数。

4. 那它们有没有关系？
有一点关系，但不是同一个东西。

第一类斯特林数满足：

x
n
‾
=
∑
k
=
0
n
[
n
k
]
x
k
x 
n
 
 = 
k=0
∑
n
​
 [ 
n
k
​
 ]x 
k
 
而二项式定理是：

(
1
+
x
)
n
=
∑
k
=
0
n
(
n
k
)
x
k
(1+x) 
n
 = 
k=0
∑
n
​
 ( 
k
n
​
 )x 
k
 
两者都是把某个多项式展开成 
x
k
x 
k
  的系数，但：

一个是 
(
1
+
x
)
n
(1+x) 
n
 ；

一个是 
x
(
x
+
1
)
⋯
(
x
+
n
−
1
)
x(x+1)⋯(x+n−1)。

所以：

二项式系数来自 
(
1
+
x
)
n
(1+x) 
n
 ；

第一类斯特林数来自 
x
n
‾
x 
n
 
 。

它们不是同一个数列。

5. 那第二类斯特林数呢？
第二类斯特林数：

{
n
k
}
{ 
n
k
​
 }
表示把 
n
n 个不同元素分成 
k
k 个非空子集的方法数。

它和普通幂有关：

x
n
=
∑
k
=
0
n
{
n
k
}
x
k
‾
x 
n
 = 
k=0
∑
n
​
 { 
n
k
​
 }x 
k
​
 
 
其中：

x
k
‾
=
x
(
x
−
1
)
(
x
−
2
)
⋯
(
x
−
k
+
1
)
x 
k
​
 
 =x(x−1)(x−2)⋯(x−k+1)
叫下降阶乘。

而二项式定理是：

(
1
+
x
)
n
=
∑
k
=
0
n
(
n
k
)
x
k
(1+x) 
n
 = 
k=0
∑
n
​
 ( 
k
n
​
 )x 
k
 
所以：

二项式系数：
(
1
+
x
)
n
(1+x) 
n
 ；

第一类斯特林数：上升阶乘 
x
n
‾
x 
n
 
 ；

第二类斯特林数：普通幂 
x
n
x 
n
  展开成下降阶乘。

它们是三个不同的组合数。

6. 一句话总结
二项式定理不是第一类斯特林数。
二项式定理给出的是二项式系数 
(
n
k
)
( 
k
n
​
 )，来自 
(
1
+
x
)
n
(1+x) 
n
 。
第一类斯特林数来自上升阶乘 
x
(
x
+
1
)
⋯
(
x
+
n
−
1
)
x(x+1)⋯(x+n−1)，表示循环排列的分法。
它们都是组合数学中的重要数列，但并不是同一个东西。

总结一下上面部分的内容。不是我后面几段的衍生
上面文件的核心内容可以概括成一句话：

容斥原理只有一个，但你看到的那几个公式分别是在“求并集”和“求补集”，并且从具体例子逐步抽象成了通用形式。

下面按文件里的逻辑梳理。

1. 两个容易混淆的式子
第一个式子：求并集
∣
⋃
i
=
1
6
A
i
∣
=
∑
i
=
1
6
∣
A
i
∣
−
∑
1
≤
i
<
j
≤
6
∣
A
i
∩
A
j
∣
+
⋯
+
(
−
1
)
6
+
1
∣
A
1
∩
⋯
∩
A
6
∣
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 = 
i=1
∑
6
​
 ∣A 
i
​
 ∣− 
1≤i<j≤6
∑
​
 ∣A 
i
​
 ∩A 
j
​
 ∣+⋯+(−1) 
6+1
 ∣A 
1
​
 ∩⋯∩A 
6
​
 ∣
它直接计算的是：

A
1
∪
A
2
∪
⋯
∪
A
6
A 
1
​
 ∪A 
2
​
 ∪⋯∪A 
6
​
 
也就是：至少属于一个集合的元素个数。

规则是：

奇加偶减

即：

单个集合：加；

两两交集：减；

三三交集：加；

四四交集：减；

以此类推。

第二个式子：求补集
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
它计算的是：

∣
S
∖
⋃
i
=
1
6
A
i
∣
​
 S∖ 
i=1
⋃
6
​
 A 
i
​
  
​
 
也就是：

∣
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩ 
A 
2
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
含义是：一个都不属于这些集合的元素个数。

它来自：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
把并集容斥代进去，符号整体反过来。

所以：

求并集：奇加偶减；

求补集：偶加奇减。

两者本质是同一个容斥原理。

2. 从具体公式到抽象公式
你熟悉的三个集合的公式是：

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
B
∩
C
∣
−
∣
A
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣
把它推广到 
n
n 个集合：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
其中：

k
k：这次取几个集合的交集；

I
I：选中的下标集合；

∣
I
∣
=
k
∣I∣=k：选了 
k
k 个集合；

A
I
A 
I
​
 ：这些集合的交集；

(
−
1
)
k
+
1
(−1) 
k+1
 ：控制“奇加偶减”。

所以抽象公式并不是新东西，只是把：

单个集合；

两两交集；

三三交集；

……

用统一符号写出来。

3. 从抽象并集公式到“口味问题”的公式
题目是：

6 种口味，排成长度 10 的序列，每种口味至少出现一次。

设：

S
=
所有长度为10、每个位置有6种口味可选的序列
S=所有长度为10、每个位置有6种口味可选的序列
则：

∣
S
∣
=
6
10
∣S∣=6 
10
 
设：

A
i
=
第 
i
 种口味一次都不出现的序列集合
A 
i
​
 =第 i 种口味一次都不出现的序列集合
要求的是：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣
也就是“每种口味至少出现一次”。

根据补集容斥：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
再把并集容斥代入，得到：

∣
A
1
‾
∩
⋯
∩
A
6
‾
∣
=
∣
S
∣
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
6
​
 
​
 ∣=∣S∣−∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
然后逐项计算：

j
=
0
j=0：
∣
S
∣
=
6
10
∣S∣=6 
10
 

j
=
1
j=1：
∣
A
i
∣
=
5
10
∣A 
i
​
 ∣=5 
10
 

j
=
2
j=2：
∣
A
i
∩
A
j
∣
=
4
10
∣A 
i
​
 ∩A 
j
​
 ∣=4 
10
 

j
=
3
j=3：
∣
A
i
∩
A
j
∩
A
k
∣
=
3
10
∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣=3 
10
 

……

选 
j
j 种口味不出现，有：

(
6
j
)
( 
j
6
​
 )
种选法，剩下可用的口味数是：

6
−
j
6−j
所以对应的序列数是：

(
6
−
j
)
10
(6−j) 
10
 
符号由 
(
−
1
)
j
(−1) 
j
  控制。

最终得到：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
4. 这个最终公式和“奇加偶减”的关系
并集容斥是：

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
符号是：

k
=
1
k=1：加；

k
=
2
k=2：减；

k
=
3
k=3：加；

……

这是“奇加偶减”。

但口味问题求的是补集：

∣
A
1
‾
∩
⋯
∩
A
n
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
n
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
n
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 
所以符号整体反过来：

∑
j
=
0
n
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
j=0
∑
n
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
符号是：

j
=
0
j=0：加；

j
=
1
j=1：减；

j
=
2
j=2：加；

j
=
3
j=3：减；

……

看起来像“偶加奇减”，但它仍然是容斥原理，只是求的是补集。

5. 整份文件的总结
整份文件其实在讲一条线：

你熟悉的容斥原理

∣
A
∪
B
∪
C
∣
=
∣
A
∣
+
∣
B
∣
+
∣
C
∣
−
∣
A
∩
B
∣
−
∣
B
∩
C
∣
−
∣
A
∩
C
∣
+
∣
A
∩
B
∩
C
∣
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣
推广到 
n
n 个集合的并集

∣
⋃
i
=
1
n
A
i
∣
=
∑
k
=
1
n
(
−
1
)
k
+
1
∑
∣
I
∣
=
k
∣
A
I
∣
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 = 
k=1
∑
n
​
 (−1) 
k+1
  
∣I∣=k
∑
​
 ∣A 
I
​
 ∣
变成求补集

∣
A
1
‾
∩
⋯
∩
A
n
‾
∣
=
∣
S
∣
−
∣
⋃
i
=
1
n
A
i
∣
∣ 
A 
1
​
 
​
 ∩⋯∩ 
A 
n
​
 
​
 ∣=∣S∣− 
​
  
i=1
⋃
n
​
 A 
i
​
  
​
 
从而：

=
∑
j
=
0
n
(
−
1
)
j
∑
∣
I
∣
=
j
∣
A
I
∣
= 
j=0
∑
n
​
 (−1) 
j
  
∣I∣=j
∑
​
 ∣A 
I
​
 ∣
应用到“6 种口味、长度 10、每种至少出现一次”
得到：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
所以核心不是“又换了一个新公式”，而是：

同一个容斥原理，从具体到抽象，从求并集到求补集，最后代入具体计数对象。

转换成markdown里面的latex，不渲染
markdown
上面文件的核心内容可以概括成一句话：

> **容斥原理只有一个，但你看到的那几个公式分别是在“求并集”和“求补集”，并且从具体例子逐步抽象成了通用形式。**

下面按文件里的逻辑梳理。

---

## 1. 两个容易混淆的式子

### 第一个式子：求并集

$$
\left|\bigcup_{i=1}^6 A_i\right|
=
\sum_{i=1}^6 |A_i|
-
\sum_{1\le i<j\le 6}|A_i\cap A_j|
+
\cdots
+
(-1)^{6+1}|A_1\cap\cdots\cap A_6|
$$

它直接计算的是：

$$
A_1\cup A_2\cup\cdots\cup A_6
$$

也就是：**至少属于一个集合的元素个数**。

规则是：

> **奇加偶减**

即：

- 单个集合：加；
- 两两交集：减；
- 三三交集：加；
- 四四交集：减；
- 以此类推。

---

### 第二个式子：求补集

$$
|S|-\sum |A_i|+\sum |A_i\cap A_j|-\sum |A_i\cap A_j\cap A_k|+\cdots
$$

它计算的是：

$$
\left|S\setminus \bigcup_{i=1}^6 A_i\right|
$$

也就是：

$$
|\overline{A_1}\cap\overline{A_2}\cap\cdots\cap\overline{A_6}|
$$

含义是：**一个都不属于这些集合的元素个数**。

它来自：

$$
|\overline{A_1}\cap\cdots\cap\overline{A_6}|
=
|S|-\left|\bigcup_{i=1}^6 A_i\right|
$$

把并集容斥代进去，符号整体反过来。

所以：

- 求并集：奇加偶减；
- 求补集：偶加奇减。

两者本质是同一个容斥原理。

---

## 2. 从具体公式到抽象公式

你熟悉的三个集合的公式是：

$$
|A\cup B\cup C|
=
|A|+|B|+|C|
-
|A\cap B|-|B\cap C|-|A\cap C|
+
|A\cap B\cap C|
$$

把它推广到 \(n\) 个集合：

$$
\left|\bigcup_{i=1}^n A_i\right|
=
\sum_{k=1}^n (-1)^{k+1}
\sum_{|I|=k}|A_I|
$$

其中：

- \(k\)：这次取几个集合的交集；
- \(I\)：选中的下标集合；
- \(|I|=k\)：选了 \(k\) 个集合；
- \(A_I\)：这些集合的交集；
- \((-1)^{k+1}\)：控制“奇加偶减”。

所以抽象公式并不是新东西，只是把：

- 单个集合；
- 两两交集；
- 三三交集；
- ……

用统一符号写出来。

---

## 3. 从抽象并集公式到“口味问题”的公式

题目是：

> 6 种口味，排成长度 10 的序列，每种口味至少出现一次。

设：

$$
S=\text{所有长度为10、每个位置有6种口味可选的序列}
$$

则：

$$
|S|=6^{10}
$$

设：

$$
A_i=\text{第 }i\text{ 种口味一次都不出现的序列集合}
$$

要求的是：

$$
|\overline{A_1}\cap\cdots\cap\overline{A_6}|
$$

也就是“每种口味至少出现一次”。

根据补集容斥：

$$
|\overline{A_1}\cap\cdots\cap\overline{A_6}|
=
|S|-\left|\bigcup_{i=1}^6 A_i\right|
$$

再把并集容斥代入，得到：

$$
|\overline{A_1}\cap\cdots\cap\overline{A_6}|
=
|S|
-
\sum |A_i|
+
\sum |A_i\cap A_j|
-
\sum |A_i\cap A_j\cap A_k|
+\cdots
$$

然后逐项计算：

- \(j=0\)：\(|S|=6^{10}\)
- \(j=1\)：\(|A_i|=5^{10}\)
- \(j=2\)：\(|A_i\cap A_j|=4^{10}\)
- \(j=3\)：\(|A_i\cap A_j\cap A_k|=3^{10}\)
- ……

选 \(j\) 种口味不出现，有：

$$
\binom{6}{j}
$$

种选法，剩下可用的口味数是：

$$
6-j
$$

所以对应的序列数是：

$$
(6-j)^{10}
$$

符号由 \((-1)^j\) 控制。

最终得到：

$$
\sum_{j=0}^{6}(-1)^j\binom{6}{j}(6-j)^{10}
$$

---

## 4. 这个最终公式和“奇加偶减”的关系

并集容斥是：

$$
\left|\bigcup_{i=1}^n A_i\right|
=
\sum_{k=1}^n (-1)^{k+1}
\sum_{|I|=k}|A_I|
$$

符号是：

- \(k=1\)：加；
- \(k=2\)：减；
- \(k=3\)：加；
- ……

这是“奇加偶减”。

但口味问题求的是补集：

$$
|\overline{A_1}\cap\cdots\cap\overline{A_n}|
=
|S|-\left|\bigcup_{i=1}^n A_i\right|
$$

所以符号整体反过来：

$$
\sum_{j=0}^{n}(-1)^j
\sum_{|I|=j}|A_I|
$$

符号是：

- \(j=0\)：加；
- \(j=1\)：减；
- \(j=2\)：加；
- \(j=3\)：减；
- ……

看起来像“偶加奇减”，但它仍然是容斥原理，只是求的是补集。

---

## 5. 整份文件的总结

整份文件其实在讲一条线：

1. **你熟悉的容斥原理**  
   $$
   |A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|B\cap C|-|A\cap C|+|A\cap B\cap C|
   $$

2. **推广到 \(n\) 个集合的并集**  
   $$
   \left|\bigcup_{i=1}^n A_i\right|
   =
   \sum_{k=1}^n (-1)^{k+1}
   \sum_{|I|=k}|A_I|
   $$

3. **变成求补集**  
   $$
   |\overline{A_1}\cap\cdots\cap\overline{A_n}|
   =
   |S|-\left|\bigcup_{i=1}^n A_i\right|
   $$
   从而：
   $$
   =
   \sum_{j=0}^n (-1)^j
   \sum_{|I|=j}|A_I|
   $$

4. **应用到“6 种口味、长度 10、每种至少出现一次”**  
   得到：
   $$
   \sum_{j=0}^{6}(-1)^j\binom{6}{j}(6-j)^{10}
   $$

所以核心不是“又换了一个新公式”，而是：

> **同一个容斥原理，从具体到抽象，从求并集到求补集，最后代入具体计数对象。**
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯ 哦所以说这个的公式不是题目问的，它直接算并集了。那么这个公式对应这是么？
是的，你理解对了。

你写的这个：

∣
⋃
i
=
1
6
A
i
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯
直接算的是并集：

∣
⋃
i
=
1
6
A
i
∣
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
也就是：

至少属于某一个 
A
i
A 
i
​
  的元素个数。

它不是题目最终要的“每种口味至少出现一次”的公式。

那这个公式在“口味问题”里对应什么？
在口味问题里，设：

A
i
=
第 
i
 种口味一次都不出现的序列集合
A 
i
​
 =第 i 种口味一次都不出现的序列集合
那么：

∣
⋃
i
=
1
6
A
i
∣
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
表示的是：

至少有一种口味一次都不出现的序列数。

也就是：

不是“每种口味都至少出现一次”的那些序列数。

所以：

∣
⋃
i
=
1
6
A
i
∣
=
至少有一种口味不出现的序列数
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =至少有一种口味不出现的序列数
而题目要的是：

每种口味至少出现一次
每种口味至少出现一次
它等于：

∣
S
∣
−
∣
⋃
i
=
1
6
A
i
∣
∣S∣− 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
其中：

∣
S
∣
=
6
10
∣S∣=6 
10
 
所以：

每种口味至少出现一次
=
6
10
−
∣
⋃
i
=
1
6
A
i
∣
每种口味至少出现一次=6 
10
 − 
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 
把它展开
因为：

∣
⋃
i
=
1
6
A
i
∣
=
∑
∣
A
i
∣
−
∑
∣
A
i
∩
A
j
∣
+
∑
∣
A
i
∩
A
j
∩
A
k
∣
−
⋯
​
  
i=1
⋃
6
​
 A 
i
​
  
​
 =∑∣A 
i
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣−⋯
所以：

每种口味至少出现一次
=
6
10
−
∑
∣
A
i
∣
+
∑
∣
A
i
∩
A
j
∣
−
∑
∣
A
i
∩
A
j
∩
A
k
∣
+
⋯
每种口味至少出现一次=6 
10
 −∑∣A 
i
​
 ∣+∑∣A 
i
​
 ∩A 
j
​
 ∣−∑∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣+⋯
再代入：

∣
A
i
∣
=
5
10
∣A 
i
​
 ∣=5 
10
 

∣
A
i
∩
A
j
∣
=
4
10
∣A 
i
​
 ∩A 
j
​
 ∣=4 
10
 

∣
A
i
∩
A
j
∩
A
k
∣
=
3
10
∣A 
i
​
 ∩A 
j
​
 ∩A 
k
​
 ∣=3 
10
 

……

就得到：

6
10
−
(
6
1
)
5
10
+
(
6
2
)
4
10
−
(
6
3
)
3
10
+
⋯
6 
10
 −( 
1
6
​
 )5 
10
 +( 
2
6
​
 )4 
10
 −( 
3
6
​
 )3 
10
 +⋯
也就是：

∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
j=0
∑
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 
对应关系总结
公式	含义
(\left	\bigcup_{i=1}^6 A_i\right	=\sum	A_i	-\sum	A_i\cap A_j	+\cdots)	至少有一种口味不出现的序列数
(	S	-\left	\bigcup_{i=1}^6 A_i\right	)	每种口味至少出现一次的序列数
(	S	-\sum	A_i	+\sum	A_i\cap A_j	-\cdots)	补集容斥展开
∑
j
=
0
6
(
−
1
)
j
(
6
j
)
(
6
−
j
)
10
∑ 
j=0
6
​
 (−1) 
j
 ( 
j
6
​
 )(6−j) 
10
 	最终结果
所以：

你写的那个并集公式，确实不是题目直接问的答案。
它是题目答案的“中间被减掉的那一部分”：
至少有一种口味不出现的序列数。

