容斥原理及其应用
容斥原理
- 之前我们已经见过,对集合中对象个数的间接计数要比对这些对象直接计数容易,即利用减法原理
- 例子:
1
∼
n
1\sim n
1∼n 的全排列,且
1
1
1 不在第一个位置的方案数
解一:第一个位置选取除了 1 1 1 的数,方案数 n − 1 n-1 n−1 ,剩下的全排列 ( n − 1 ) ! (n-1)! (n−1)!
解二:全集: n ! n! n! ,第一个位置放 1 1 1 的排列方案为 ( n − 1 ) ! (n-1)! (n−1)!,所以方案为 n ! − ( n − 1 ) ! n!-(n-1)! n!−(n−1)! - 例子:
1
∼
600
1 \sim 600
1∼600 之间不能被
6
6
6 整除的整数的个数
解: 600 − 600 / 6 = 500 600-600/6=500 600−600/6=500 - 上面是关于容斥定理的最简单的例子
现在我们把它扩展到容斥定理
设 P i P_i Pi 表示 S S S 对象涉及到的性质
并设 A i = { x : x 属 于 S 且 x 具 有 性 质 P i } A_i=\{x:x属于S且x具有性质P_i\} Ai={x:x属于S且x具有性质Pi}
比如 A i ∩ A j A_i\cap A_j Ai∩Aj 就是同时具有性质 P i , P j P_i,P_j Pi,Pj
不具有任何性质的对象形成的子集则是 ∩ i A i ˉ \cap_i\bar{A_i} ∩iAiˉ - 定理:集合
S
S
S 中不具有性质
P
1
∼
P
m
P_1\sim P_m
P1∼Pm 的对象个数由下面的交错表达式给出:
∣ ∩ i A i ˉ ∣ = ∣ S ∣ − ∑ ∣ A i ∣ + ∑ ∣ A i ∩ A j ∣ − ∑ ∣ A i ∩ A j ∩ A k ∣ + ⋯ + ( − 1 ) m ∣ ∩ i A i ∣ |\cap_i\bar{A_i}|=|S|-\sum |A_i|+\sum |A_i\cap A_j|-\sum|A_i\cap A_j \cap A_k|+\cdots+(-1)^m|\cap _iA_i| ∣∩iAiˉ∣=∣S∣−∑∣Ai∣+∑∣Ai∩Aj∣−∑∣Ai∩Aj∩Ak∣+⋯+(−1)m∣∩iAi∣
右边的项数为 2 m 2^m 2m
证明:若 x x x 不具备任何一个性质 P i P_i Pi ,那么 x x x 对式子的贡献是 1 − 0 + 0 ⋯ = 1 1-0+0\cdots=1 1−0+0⋯=1
若 x x x 具有 y y y 个性质, x x x 对于 ∣ S ∣ |S| ∣S∣ 的贡献是 1 1 1
它对 ∑ ∣ A i ∣ \sum|A_i| ∑∣Ai∣ 的贡献是 C n 1 C_n^1 Cn1
它对 ∑ ∣ A i ∩ A j ∣ \sum|A_i\cap A_j| ∑∣Ai∩Aj∣ 的贡献是 C n 2 C_n^2 Cn2
于是,它的总的贡献就是 ∑ ( − 1 ) i C n i = 0 \sum (-1)^iC_n^i=0 ∑(−1)iCni=0,于是得证 - 推论:集合
S
S
S 中至少具有性质
P
1
∼
P
m
P_1\sim P_m
P1∼Pm 之一的对象个数由下式给出:
∣ ∪ i A i ∣ = ∑ ∣ A i ∣ − ∑ ∣ A i ∩ A j ∣ + ⋯ + ( − 1 ) m + 1 ∣ ∩ i A i ∣ |\cup_i A_i|=\sum |A_i|-\sum |A_i\cap A_j|+\cdots +(-1)^{m+1}|\cap_i A_i| ∣∪iAi∣=∑∣Ai∣−∑∣Ai∩Aj∣+⋯+(−1)m+1∣∩iAi∣
证明:根据德摩根定理,即:
∪ A ‾ i = ∩ A i ˉ \overline{\cup A}_i=\cap \bar{A_i} ∪Ai=∩Aiˉ
所以等式左边 ∣ ∪ A i ∣ = ∣ S ∣ − ∣ ∪ A i ‾ ∣ = ∣ S ∣ − ∣ ∩ A i ˉ ∣ |\cup A_i|=|S|-|\overline{\cup A_i}|=|S|-|\cap \bar{A_i}| ∣∪Ai∣=∣S∣−∣∪Ai∣=∣S∣−∣∩Aiˉ∣
然后带入上面容斥原理式子即可得到 - 例子:
1
∼
1000
1\sim 1000
1∼1000 之间不能被
5
、
6
、
8
5、6、8
5、6、8 整除的数的个数?
解:设出 A i A_i Ai 表示 S S S 中具有 P i P_i Pi 性质的集合
容易得到我们最终的答案为:
∣ ∩ A i ˉ ∣ |\cap \bar{A_i}| ∣∩Aiˉ∣
容易得到:
∣ A 1 ∣ = ⌊ 1000 5 ⌋ = 200 ∣ A 2 ∣ = ⌊ 1000 6 ⌋ = 166 ∣ A 3 ∣ = ⌊ 1000 8 ⌋ = 125 |A_1|=\lfloor \frac{1000}{5} \rfloor =200\\\ \\ |A_2|=\lfloor \frac{1000}{6} \rfloor =166\\\ \\ |A_3|=\lfloor \frac{1000}{8} \rfloor =125\\\ \\ ∣A1∣=⌊51000⌋=200 ∣A2∣=⌊61000⌋=166 ∣A3∣=⌊81000⌋=125
集合 ∣ A i ∩ A j ∣ |A_i\cap A_j| ∣Ai∩Aj∣ 就是满足 P i , P j P_i,P_j Pi,Pj 的性质的数字,也就是数字被 l c m ( 数 i , 数 j ) lcm(数i,数j) lcm(数i,数j) 整除的数的个数
∣ A 1 ∩ A 2 ∣ = ⌊ 1000 l c m ( 5 , 6 ) ⌋ = 33 ∣ A 1 ∩ A 3 ∣ = ⌊ 1000 l c m ( 5 , 8 ) ⌋ = 25 ∣ A 2 ∩ A 3 ∣ = ⌊ 1000 l c m ( 6 , 8 ) ⌋ = 41 |A_1\cap A_2|=\lfloor \frac{1000}{lcm(5,6)} \rfloor =33\\\ \\ |A_1\cap A_3|=\lfloor \frac{1000}{lcm(5,8)} \rfloor =25\\\ \\ |A_2\cap A_3|=\lfloor \frac{1000}{lcm(6,8)} \rfloor =41 ∣A1∩A2∣=⌊lcm(5,6)1000⌋=33 ∣A1∩A3∣=⌊lcm(5,8)1000⌋=25 ∣A2∩A3∣=⌊lcm(6,8)1000⌋=41
最后还有
∣ A 1 ∩ A 2 ∩ A 3 ∣ = ⌊ 1000 l c m ( 5 , 6 , 8 ) ⌋ = 8 |A_1\cap A_2 \cap A_3|=\lfloor \frac{1000}{lcm(5,6,8)} \rfloor =8\\\ \\ ∣A1∩A2∩A3∣=⌊lcm(5,6,8)1000⌋=8
根据容斥定理,得到:
∣ ∩ A i ˉ ∣ = ∣ S ∣ − ∑ ∣ A i ∣ + ∑ ∣ A i ∩ A j ∣ − ∑ ∣ A i ∩ A j ∩ A k ∣ = 600 |\cap \bar{A_i}|=|S|-\sum|A_i|+\sum|A_i \cap A_j| -\sum |A_i\cap A_j\cap A_k|=600 ∣∩Aiˉ∣=∣S∣−∑∣Ai∣+∑∣Ai∩Aj∣−∑∣Ai∩Aj∩Ak∣=600 - 后文记号:
假设 ∩ i = 1 k A i \cap_{i=1}^k A_i ∩i=1kAi 的大小仅依赖于 k k k 而不依赖于我们选了哪 k k k 个集合,因此就存在常数 α i \alpha_i αi 满足如下:
α 0 = ∣ S ∣ α 1 = ∣ A 1 ∣ = ∣ A 2 ∣ = ⋯ = ∣ A m ∣ α 2 = ∣ A 1 ∩ A 2 ∣ = ∣ A 2 ∩ A 3 ∣ = ⋯ = ∣ A m − 1 ∩ A m ∣ ⋮ α m = ∣ A 1 ∩ A 2 ∩ ⋯ ∩ A m ∣ \begin{aligned} \alpha_0&=|S|\\ \alpha_1&=|A_1|=|A_2|=\cdots =|A_m|\\ \alpha_2&=|A_1\cap A_2|=|A_2\cap A_3|=\cdots =|A_{m-1}\cap A_m|\\ \vdots\\ \alpha_m&=|A_1\cap A_2\cap \cdots \cap A_m| \end{aligned} α0α1α2⋮αm=∣S∣=∣A1∣=∣A2∣=⋯=∣Am∣=∣A1∩A2∣=∣A2∩A3∣=⋯=∣Am−1∩Am∣=∣A1∩A2∩⋯∩Am∣
在这个情况下,容斥原理可以简化成:
∣ ∩ A i ˉ ∣ = ∑ i = 0 m ( − 1 ) i α i C m i |\cap \bar{A_i}|=\sum_{i=0}^m (-1)^i\alpha_i C_m^i ∣∩Aiˉ∣=i=0∑m(−1)iαiCmi - 例子:
0
∼
99999
0\sim 99999
0∼99999 之间有多少个数字含有
2
,
5
,
8
2,5,8
2,5,8 至少一个的整数?
解:我们可以把 S S S 看做是 0 ∼ 9 0\sim 9 0∼9 的一个多重集合的 5 5 5 排列,每个数字的重数至少是 5 5 5
设 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3 表示一个整数不包含 2 / 5 / 8 2/5/8 2/5/8 的性质
我们希望得到的是 ∣ A 1 ˉ ∪ A 2 ˉ ∪ A 3 ˉ ∣ |\bar{A_1}\cup\bar{A_2}\cup\bar{A_3}| ∣A1ˉ∪A2ˉ∪A3ˉ∣
根据上文的记号,我们有:
α 0 = 1 0 5 α 1 = 9 5 α 2 = 8 5 α 3 = 7 5 \alpha_0=10^5\\ \alpha_1=9^5\\ \alpha_2=8^5\\ \alpha_3=7^5\\ α0=105α1=95α2=85α3=75
于是我们带入容斥定理,就能得到答案:
C 3 0 1 0 5 − C 3 1 9 5 + C 3 2 8 5 − C 3 3 7 5 C_3^010^5-C_3^1 9^5+C_3^2 8^5 -C_3^3 7^5 C30105−C3195+C3285−C3375
带重复的组合
- 之前,我们已经得到了,有
k
k
k 种对象,每种对象都有无限重数的多重集合的
r
r
r 组合的个数等于
C k + r − 1 r C_{k+r-1}^r Ck+r−1r
在这里,我们利用上述公式与容斥原理的应用,给出寻找元素重数没有限制的多重集合的 r r r 组合的方法 - 例子:确定多重集合
T
=
{
3
⋅
a
,
4
⋅
b
,
5
⋅
c
}
T=\{3\cdot a,4\cdot b,5\cdot c\}
T={3⋅a,4⋅b,5⋅c} 的
10
10
10 组合的数目
我们把容斥原理应用到多重集合 T ∗ = { ∞ ⋅ a , ∞ ⋅ b , ∞ ⋅ c } T^*=\{\infin \cdot a,\infin \cdot b,\infin \cdot c\} T∗={∞⋅a,∞⋅b,∞⋅c} 上
设 P 1 P_1 P1 是 T ∗ T^* T∗ 的 10 10 10 组合中 a a a 出现多于 3 3 3 次的性质
设 P 2 P_2 P2 是 T ∗ T^* T∗ 的 10 10 10 组合中 b b b 出现多于 4 4 4 次的性质
设 P 3 P_3 P3 是 T ∗ T^* T∗ 的 10 10 10 组合中 c c c 出现多于 5 5 5 次的性质
容易得到, T T T 的 10 10 10 组合就是 T ∗ T^* T∗ 的 10 10 10 组合中,不满足上述三个性质的数目。
设 A i A_i Ai 由 T ∗ T^* T∗ 的 10 10 10 组合中不具有性质 P i P_i Pi 组成的
首先容易得到:
∣ S ∣ = C 10 + 3 − 1 10 = 66 |S|=C_{10+3-1}^{10}=66 ∣S∣=C10+3−110=66
那么集合 A 1 A_1 A1 就是 a a a 至少出现了 4 4 4 次的 10 10 10 组合,我们去掉这 4 4 4 个 a a a ,就变成了一个 T ∗ T^* T∗ 的 6 6 6 组合的方案数:
∣ A 1 ∣ = C 3 + 6 − 1 6 = 28 |A_1|=C_{3+6-1}^6=28 ∣A1∣=C3+6−16=28
类似的也能得到 ∣ A 2 ∣ , ∣ A 3 ∣ |A_2|,|A_3| ∣A2∣,∣A3∣
那么集合 ∣ A 1 ∩ A 2 ∣ |A_1\cap A_2| ∣A1∩A2∣ 就是 a a a 至少出现了 4 4 4 次, b b b 至少出现了 5 5 5 次 的 T ∗ T^* T∗ 的 10 10 10 组合
我们可以去掉 4 4 4 个 a a a 和 5 5 5 个 b b b ,可以得到是一个 T ∗ T^* T∗ 的 1 1 1 组合,就是:
∣ A 1 ∩ A 2 ∣ = C 1 + 3 − 1 1 = 3 |A_1\cap A_2|=C_{1+3-1}^1 =3 ∣A1∩A2∣=C1+3−11=3
其他的都是类似的做法
然后使用容斥原理就可以得到我们要的答案:
∣ A 1 ˉ ∩ A 2 ˉ ∩ A 3 ˉ ∣ = ∣ S ∣ − ∑ ∣ A i ∣ + ∑ ∣ A i ∩ A j ∣ − ∑ ∣ A i ∩ A j ∩ A k ∣ |\bar{A_1}\cap\bar{A_2}\cap\bar{A_3}|=|S|-\sum|A_i|+\sum |A_i\cap A_j|-\sum |A_i\cap A_j\cap A_k| ∣A1ˉ∩A2ˉ∩A3ˉ∣=∣S∣−∑∣Ai∣+∑∣Ai∩Aj∣−∑∣Ai∩Aj∩Ak∣ - 例子:满足
{ x 1 + x 2 + x 3 + x 4 = 18 1 ≤ x 1 ≤ 5 − 2 ≤ x 2 ≤ 4 0 ≤ x 3 ≤ 5 3 ≤ x 4 ≤ 9 x 1 , x 2 , x 3 , x 4 ∈ Z \begin{cases} x_1+x_2+x_3+x_4=18\\ 1\le x_1\le 5\\ -2\le x_2\le 4\\ 0\le x_3\le 5\\ 3\le x_4\le 9\\ x_1,x_2,x_3,x_4\in Z \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧x1+x2+x3+x4=181≤x1≤5−2≤x2≤40≤x3≤53≤x4≤9x1,x2,x3,x4∈Z
的解的个数?
解:引入新变量 y 1 = x 1 − 1 y_1=x_1-1 y1=x1−1 等,把问题转化为:
{ y 1 + y 2 + y 3 + y 4 = 16 0 ≤ y 1 ≤ 4 0 ≤ y 2 ≤ 6 0 ≤ y 3 ≤ 5 0 ≤ y 4 ≤ 6 y 1 , y 2 , y 3 , y 4 ∈ Z \begin{cases} y_1+y_2+y_3+y_4=16\\ 0\le y_1\le 4\\ 0\le y_2\le 6\\ 0\le y_3\le 5\\ 0\le y_4\le 6\\ y_1,y_2,y_3,y_4\in Z \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧y1+y2+y3+y4=160≤y1≤40≤y2≤60≤y3≤50≤y4≤6y1,y2,y3,y4∈Z
的方案数
然后方法类似于上面,直接容斥定理一波带走
错位排列
- 因为对象的实际性质与讨论不相干,我们可以取
X
X
X 为集合
{
1
,
2
,
3
,
⋯
,
n
}
\{1,2,3,\cdots,n\}
{1,2,3,⋯,n} ,其中每个整数的位置都由它们在序列
1
,
2
,
⋯
,
n
1,2,\cdots,n
1,2,⋯,n 中的位置确定。
{ 1 , 2 , 3 , ⋯ , n } \{1,2,3,\cdots,n\} {1,2,3,⋯,n} 的一个错位排列是 { 1 , 2 , 3 , ⋯ , n } \{1,2,3,\cdots,n\} {1,2,3,⋯,n} 的一个排列 i 1 , i 2 , ⋯ , i n i_1,i_2,\cdots,i_n i1,i2,⋯,in ,其中满足
∀ k ∈ [ 1 , n ] , i k ≠ i \forall k\in[1,n],i_k\ne i ∀k∈[1,n],ik=i
记 D n D_n Dn 表示 { 1 , 2 , 3 , ⋯ , n } \{1,2,3,\cdots,n\} {1,2,3,⋯,n} 的错位排列的数目 - 定理:对于
n
≥
1
n\ge 1
n≥1,我们有:
D n = n ! ( 1 − 1 1 ! + 1 2 ! − 1 3 ! + ⋯ + ( − 1 ) n 1 n ! ) D_n=n!(1-\frac{1}{1!}+\frac{1}{2!}-\frac{1}{3!}+\cdots+(-1)^n\frac{1}{n!}) Dn=n!(1−1!1+2!1−3!1+⋯+(−1)nn!1)
证明:设 P j P_j Pj 性质表示 i j = j i_j=j ij=j 的时候的一个排列
错位排列就是 ∣ ∩ A i ˉ ∣ |\cap \bar{A_i}| ∣∩Aiˉ∣
容易想到,
∣ A i ∣ = ( n − 1 ) ! ∣ A i ∩ A j ∣ = ( n − 2 ) ! ⋯ ∣ A i 1 ∩ A i 2 ∩ ⋯ ∩ A i k ∣ = ( n − k ) ! |A_i|= (n-1)!\\ |A_i\cap A_j|=(n-2)!\\ \cdots\\ |A_{i_1}\cap A_{i_2}\cap \cdots \cap A_{i_k}|=(n-k)! ∣Ai∣=(n−1)!∣Ai∩Aj∣=(n−2)!⋯∣Ai1∩Ai2∩⋯∩Aik∣=(n−k)!
直接应用容斥定理,我们得到:
∣ ∩ A i ˉ ∣ = ∣ S ∣ − ∑ ∣ A i ∣ + ∑ ∣ A i ∩ A j ∣ + ⋯ = n ! − C n 1 ( n − 1 ) ! + C n 2 ( n − 2 ) ! + ⋯ = n ! − n ! 1 ! + n ! 2 ! − n ! 3 ! + ⋯ + ( − 1 ) n n ! n ! = n ! ( 1 − 1 1 ! + 1 2 ! − 1 1 ! + ⋯ + ( − 1 ) n 1 n ! ) \begin{aligned} |\cap \bar{A_i}|&=|S|-\sum|A_i|+\sum|A_i\cap A_j|+\cdots\\ &=n!-C_n^1 (n-1)!+C_n^2 (n-2)!+\cdots\\ &=n!-\frac{n!}{1!}+\frac{n!}{2!}-\frac{n!}{3!}+\cdots +(-1)^n\frac{n!}{n!}\\ &=n!(1-\frac{1}{1!}+\frac{1}{2!}-\frac{1}{1!}+\cdots +(-1)^n\frac{1}{n!}) \end{aligned} ∣∩Aiˉ∣=∣S∣−∑∣Ai∣+∑∣Ai∩Aj∣+⋯=n!−Cn1(n−1)!+Cn2(n−2)!+⋯=n!−1!n!+2!n!−3!n!+⋯+(−1)nn!n!=n!(1−1!1+2!1−1!1+⋯+(−1)nn!1) - 我们注意到:
e
−
1
≈
D
n
n
!
e^{-1}\approx \frac{D_n}{n!}
e−1≈n!Dn
关系式: D n = ( n − 1 ) ( D n − 2 + D n − 1 ) D_n=(n-1)(D_{n-2}+D_{n-1}) Dn=(n−1)(Dn−2+Dn−1)
或者等价的 D n = n D n − 1 + ( − 1 ) n D_n=nD_{n-1}+(-1)^n Dn=nDn−1+(−1)n
在下一章讨论求解常系数线性递推关系
带有禁止位置的排列
- 例子:在
n
×
n
n\times n
n×n 的网格中,令
X
i
X_i
Xi 表示第
i
i
i 行不能放的所有列的集合
现在问你,放 n n n 个非攻击型车在能放的位置的方案数
解:令 P i P_i Pi 表示第 i i i 行的车是属于 X i X_i Xi 的列上的性质
我们最终求的就是:
∣ ∩ A i ˉ ∣ |\cap \bar{A_i}| ∣∩Aiˉ∣
容斥原理带入,我们需要求出:
∣ S ∣ = n ! ∣ A 1 ∣ = ∣ X 1 ∣ ( n − 1 ) ∣ A i ∣ = ∣ X i ∣ ( n − 1 ) ! |S|=n!\\ |A_1|=|X_1|(n-1)\\ |A_i|=|X_i|(n-1)! ∣S∣=n!∣A1∣=∣X1∣(n−1)∣Ai∣=∣Xi∣(n−1)!
令 r 1 = ∑ ∣ X i ∣ r_1=\sum |X_i| r1=∑∣Xi∣,我们可以得到:
∑ ∣ A i ∣ = r 1 ( n − 1 ) ! \sum |A_i|=r_1(n-1)! ∑∣Ai∣=r1(n−1)!
设 r 2 r_2 r2 表示把两个非攻击型车放在禁止位置上的方案数,则:
∑ ∣ A i ∩ A j ∣ = r 2 ( n − 2 ) ! \sum|A_i\cap A_j|=r_2(n-2)! ∑∣Ai∩Aj∣=r2(n−2)!
顺理推到 r k r_k rk 表示把 k k k 个非攻击型车放在禁止位置上的方案数,则:
∣ ∩ A i ˉ ∣ = ∑ i = 0 n ( − 1 ) i r i ( n − i ) ! |\cap \bar{A_i}|=\sum_{i=0}^n (-1)^i r_i (n-i)! ∣∩Aiˉ∣=i=0∑n(−1)iri(n−i)!
注意到,如果禁止格子特别多的话,那么 r k r_k rk 反而更难计算。
莫比乌斯反演
- 容斥原理是莫比乌斯反演在有限偏序集上的一个实例
跳过大量证明…
具体的 A C M ACM ACM 竞赛内容可以看我之前的博客 - 例子:计算 k k k 个不同元素的循环 n n n 排列的个数,每个元素都可以用任意多次
更新了自己的理解
- 解:我们设
d
d
d 表示一个循环排列的周期(每个元素都绕中心旋转最少的次数让出现两次相同排列)
一个循环 n n n 排列的周期 d d d 满足 1 ≤ d ≤ n 1\le d\le n 1≤d≤n 且 d ∣ n d|n d∣n
设 h ( n ) h(n) h(n) 是可能使用这 k k k 个元素的循环 n n n 排列的个数
设 f ( d ) f(d) f(d) 等于长度为 n n n 且可能使用这 k k k 个元素的串的个数,每个串有一个循环周期 d d d,满足 d ∣ n d|n d∣n
因此下式成立:
h ( n ) = ∑ d ∣ n f ( d ) d h(n)=\sum_{d|n}\frac{f(d)}{d} h(n)=d∣n∑df(d)
因为循环周期为 d d d,所以有 d d d 次重复计数。
设 g ( n ) g(n) g(n),表示:
g ( n ) = ∑ e ∣ n f ( e ) g(n)=\sum_{e|n}f(e) g(n)=e∣n∑f(e)
于是, g ( n ) g(n) g(n) 是长度为 n n n 的串的总数,因为一个串的循环周期一定满足 d ∣ n d|n d∣n ,且 g ( n ) = n k g(n)=n^k g(n)=nk
根据经典的莫比乌斯反演,我们得到:
f ( d ) = ∑ e ∣ d μ ( d e ) g ( e ) f(d)=\sum_{e|d}\mu(\frac{d}{e})g(e) f(d)=e∣d∑μ(ed)g(e)
在第一个式子中我们使用上述式子,得到:
h ( n ) = ∑ d ∣ n f ( d ) d = ∑ d ∣ n 1 d ∑ e ∣ d μ ( d e ) k e = ∑ e ∣ n ( ∑ m ∣ n e 1 m e μ ( m ) ) k e = ∑ e ∣ n ( ∑ r ∣ n e r n μ ( n e r ) ) k e = ∑ e ∣ n φ ( n / e ) n k e = 1 n ∑ e ∣ n φ ( n e ) k e \begin{aligned} h(n)&=\sum_{d|n}\frac{f(d)}{d}\\ &=\sum_{d|n}\frac{1}{d} \sum_{e|d}\mu(\frac{d}{e})k^e\\ &=\sum_{e|n}(\sum_{m|\frac{n}{e}}\frac{1}{me}\mu(m))k^e\\ &=\sum_{e|n}(\sum_{r|\frac{n}{e}}\frac{r}{n}\mu(\frac{n}{er}))k^e\\ &=\sum_{e|n}\frac{\varphi(n/e)}{n}k^e\\ &=\frac{1}{n}\sum_{e|n}\varphi(\frac{n}{e})k^e \end{aligned} h(n)=d∣n∑df(d)=d∣n∑d1e∣d∑μ(ed)ke=e∣n∑(m∣en∑me1μ(m))ke=e∣n∑(r∣en∑nrμ(ern))ke=e∣n∑nφ(n/e)ke=n1e∣n∑φ(en)ke
注意到,第二行到第三行的转换:因为 d ∣ n d|n d∣n 且 e ∣ d e|d e∣d ,所以相当于 d = m e d=me d=me ,从而 m e ∣ n me|n me∣n,从而 m ∣ ( n / e ) m|(n/e) m∣(n/e)
第三行到第四行的转换:令 n = r d = m e r n=rd=mer n=rd=mer,所以得到了 r = n m e r=\frac{n}{me} r=men,那自然 r ∣ n e r|\frac{n}{e} r∣en
第四行到第五行的转换:因为我们有
φ ( n ) = ∑ d ∣ n μ ( n d ) d \varphi(n)=\sum_{d|n}\mu(\frac{n}{d})d φ(n)=d∣n∑μ(dn)d
注意到,这个问题就是珠子染色问题,但是我们没有使用 P o l y a Polya Polya 定理或者 B u r n S i d e BurnSide BurnSide 引理,因此化简会非常复杂
更简单的化简方式这篇博客有:【算法讲27:Polya定理】BurnSide 引理 Polya定理 | 洛谷 P4980