c语言容斥原理,容斥原理 | 易学教程
容斥原理
\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i
二項式反演
形式1
\(f_i=\sum_{j=k}^n C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^{i-j}*C(i,j)*f_j\)
形式2
\(f_i=\sum_{j=k}^n (-1)^j*C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^j*C(i,j)*f_j\)
證明1
\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i
\(\Rightarrow |\complement A_1\cap \complement A_2\cap...\cap \complement A_n|=|S|-\sum\limits_{1\le i\le n}|A_i|+\sum\limits_{1\le i
\(\Rightarrow |A_1\cap A_2\cap...\cap A_n|=|S|-\sum\limits_{1\le i\le n}|\complement A_i|+\sum\limits_{1\le i
假設現(xiàn)在交集的大小僅是關于集合個數(shù)的函數(shù),
設\(f_n\)表示\(|A_1\cap A_2\cap...\cap A_n|\),\(g_n\)表示\(|\complement A_1\cap
\complement A_2\cap...\cap \complement A_n|\),且\(f(0)=g(0)=|S|\),則
\(f_i=\sum_{j=0}^i (-1)^j*C(i,j)*g_j\)
\(g_i=\sum_{j=0}^i (-1)^j*C(i,j)*f_j\)
形式2得證,證明形式1只需代換即可.
對于\(\sum_{j=k}^i\)的情況,請看證明2.
證明2
對于形式1,把\(f_i\)代入右側式子得
\(g_i=\sum_{j=k}^i (-1)^{i-j}*C(i,j)*\sum_{l=k}^j C(j,l)*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*C(i,j)*C(j,l)*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{i!}{j!(i-j)!}*\frac{j!}{l!(j-l)!}*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{(i-l)!}{(i-j)!(j-l)!}*\frac{i!}{(i-l)!l!}*g_l\)
\(=\sum_{l=k}^i C(i,l)*g_l*\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)\)
當\(i\neq l\)時,由二項式定理,得\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=(1-1)^{i-l}=0\)
當\(i=l\)時,\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=1\)
\(\therefore g_i=[i=l]*C(i,l)*g_l=g_i\),得證.
習題
A. HDU 4135
求 \([A,B]\) 中有多少個數(shù)與 \(N\) 互質(zhì)。 \(A,B\le 10^{15},N\le 10^9\)
解
\(O(\sqrt n)\) 找出 \(n\) 的所有質(zhì)因子,然后指數(shù)級容斥。可以證明質(zhì)因子個數(shù)不會超過15個。
B. HDU 4059
\(T\le 1000\) 組詢問,給定 \(n\) ,求與 \(n\) 互質(zhì)的數(shù)的四次方和。
解
\(O(\sqrt n)\) 找出 \(n\) 的所有質(zhì)因子,然后指數(shù)級容斥。可以證明質(zhì)因子個數(shù)不會超過6個。
C. HDU 5201
有 \(n\) 件物品, \(m\) 個人,現(xiàn)在要把物品分給人,要求沒有一個人拿到的物品數(shù)大于等于第一個人拿到的物品數(shù)。求方案數(shù)。多組數(shù)據(jù)。 \(T\le 25,n,m\le 10^5\)
解
先枚舉第一個人拿到的物品數(shù) \(i\)。
然后就要求把 \(n-i\) 個物品分給 \(m-1\) 個人且每個人不能超過 \(i\) 的方案數(shù)。
來源:https://www.cnblogs.com/BlogOfchc1234567890/p/10885615.html
總結
以上是生活随笔為你收集整理的c语言容斥原理,容斥原理 | 易学教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用c语言做教学课程安排,C语言入门课程安
- 下一篇: c语言系统主函数流程图,C语言程序设计—