二项式反演

会证二项式反演啦!

其实推式子还是很好玩的,对吧。

先来说一下二项式反演的内容:

设你有两个数列\(f\)\(g\),满足:

\[g_i=\sum_{j=1}^i {i \choose j} f_j \]

那么一定有:

\[f_i=\sum_{j=1}^i (-1)^{i-j} {i \choose j} g_j \]

其实二项式反演还有另一种形式,只不过最常用的是上面那种,在这里也写出来:

如果有:

\[g_i=\sum_{j=1}^i (-1)^j {i \choose j} f_j \]

那么:

\[f_i=\sum_{j=1}^i (-1)^j {i \choose j} g_j \]

下面来证明一下第一种形式。

把第一个式子代入第二个可以知道:

\[f_i=\sum_{j=1}^i (-1)^{i-j} {i \choose j} \sum_{k=1}^j {j \choose k} f_k \]

整理一下,\(f_k\)的系数就是:

\[\sum_{j=k}^i (-1)^{i-j} {i \choose j} {j \choose k} \]

我们只要证明上面的式子等价于\([i==k]\)即可,把二项式系数拆成阶乘的形式:

\[\sum_{j=k}^i (-1)^{i-j} \frac{i!}{j!(i-j)!}*\frac{j!}{k!(j-k)!} \]

消掉\(j!\),再把\(i!\)\(k!\)提出来:

\[\Bigg( \sum_{j=k}^i (-1)^{i-j} \frac{1}{(i-j)!(j-k)!} \Bigg) * \frac{i!}{k!} \]

再在前面乘以\((i-k)!\),后面除以\((i-k)!\)

\[\Bigg( \sum_{j-k}^i (-1)^{i-j} \frac{(i-k)!}{(i-j)!(j-k)!} \Bigg) * \frac{i!}{k!(i-k)!} \]

就等于:

\[\Bigg( \sum_{j=k}^i (-1)^{i-j} {i-k \choose j-k} \Bigg) * {i \choose k} \]

不难发现前面那一项就是\(i-k\)的二项式系数错位相减,这是等于\([i-k=0]\)的,也就是在\(i!=k\)时,前一项永远为\(0\)。而\(i==k\)时,前后两项都为\(1\),因此得证。

\(note\):有些题目的式子推出来是下标从\(0\)开始的,也可以用二项式反演。因为证明过程并没有用到那个\(1\)

然后就可以用二项式反演来套路题目了,一般就是你要求\(f\),已经知道一个好求的\(g\)满足\(g_i=\sum_{j=1}^i {i \choose j} f_j\),然后就只要二项式反演一下就好了。

posted @ 2018-09-13 08:01  Mr_Spade  阅读(1089)  评论(0编辑  收藏  举报