省选后数学学习

  省选差点被数学题送退役(指式子推复杂了,导致最后还有一个组合数模非质数,没写出来),决定重新学一些数学知识。

Lucas定理的证明

  上来先写一个理性愉悦。

  先来复习一下Lucas是啥:$\binom{n}{m} \% p$ ,其中n,m比较大,p是一个不太大的质数;复杂度是预处理 $O(p)$,每次询问 $O(\log_pm)$。

  首先证明一个引理:$(1+x)^p\equiv1+x^p\pmod p$,考虑使用二项式定理展开左边,得到:

  $\sum_{i=0}^p\binom{p}{i}x^i=\sum_{i=0}^p\frac{p!}{i!(p-i)!}x^i=\sum_{i=0}^p\frac{p(p-1)\dots(p-i+1)}{i!}x^i$

  先不考虑 $i=0$ 的情况,在 $i\neq p$ 时,因为 $p$ 是质数,所以分子上的 $p$ 是不可能与分母约分的,也就是说,当 $i\neq p$ 时,$\binom{p}{i}x^i\equiv0 \pmod p$.即,$(1+x)^p=\sum_{i=0}^p\binom{p}{i}x^i=\binom{p}{p}x^p+\binom{p}{0}x^0=1+x^p\pmod{p}$

  不停使用这个引理,得到:$(1+x)^{p^i}=1+x^{p^i}\pmod p$

  当然,用费马小定理似乎也可以直接证明这个引理就是了...

  现在整一个好玩的东西:组合数生成函数;

  $f(x)=\sum_{i=0}^m\binom{m}{i}x^i=(1+x)^m$

  对 $m$ 进行 $p$ 进制拆分:$m=\sum m_ip^i$

  $f(x)=(1+x)^{\sum m_ip^i}=\prod(1+x)^{m_ip^i}=\prod((1+x)^{p^i})^{m_i}$

  $=\prod (1+x^{p_i})^m=\prod \left(\sum\limits_{j=0}^{m_i}\binom{m_i}{j}x^{p^i\times j}\right)$

  $=\prod\left(\sum\limits_{n_i=0}^{p-1}\binom{m_i}{n_i}x^{p^i\times n_i}\right)=\sum\left(\prod\binom{m_i}{n_i}\right)x^{\sum p^i n_i}$

  我们将它和最早的形式放到一起,就可以得到:$\sum \binom{m}{n}x^n=\sum\left(\prod\binom{m_i}{n_i}\right)x^{\sum p^i n_i}$

  两个生成函数相等,就意味着对应项的系数相等,可以得到:

  $\binom{m}{n}=\prod\binom{m_i}{n_i}\pmod p$

  于是就证明完啦。

 

斯特林数

  第一类斯特林数:把n个数分为m个非空环的方案数;

    递推:每个数可以选择自己新开一个环,或者插入之前任意一个数后边;

      $\begin{bmatrix} n\\m \end{bmatrix}=\begin{bmatrix} n-1\\m-1 \end{bmatrix}+(n-1)\times \begin{bmatrix} n-1\\m \end{bmatrix}$

   第二类斯特林数:把n个数分为m个非空集合的方案数;

    递推:每个数可以选择自己新开一个集合,也可以加入之前的任意一个集合;

      $\begin{Bmatrix} n\\m \end{Bmatrix}=\begin{Bmatrix} n-1\\m-1 \end{Bmatrix}+m\times \begin{Bmatrix} n-1\\m \end{Bmatrix}$

    容斥计算法:考虑有几个集合是空的;(要乘以阶乘的倒数是因为斯特林数中的集合是不区分的,但容斥式子中却是按区分来做的)

      $\begin{Bmatrix} n\\m \end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^i\binom{m}{i}(m-i)^n$

  既然第二类斯特林数可以用幂来表示,那幂也可以由第二类斯特林数表示,思路依然是考虑有几个空集合。

    $n^k=\sum_{i=0}^k\binom{n}{i}\times i!\times  \begin{Bmatrix} k\\i \end{Bmatrix}$

    (差点被上述式子送退役)

 

下降幂与上升幂

  下降幂:$n^{\underline{m}}=\prod_{i=0}^{m-1} (n-i)$

  普通幂转下降幂:$n^m=\sum_{i=0}^m n^{\underline{i}}\begin {Bmatrix}m\\i\end{Bmatrix}$

    证明:听上去很高级,其实就是 $n^k=\sum_{i=0}^k\binom{n}{i}\times i!\times  \begin{Bmatrix} k\\i \end{Bmatrix}$ 的另一种写法罢了...

 

  上升幂:$n^{\overline{m}}=\prod_{i=0}^{m-1} (n+i)$

  上升幂转普通幂:$n^{\overline{m}}=\sum_{i=0}^m n^{i}\begin {bmatrix}m\\i\end{bmatrix}$

    证明:采用数学归纳法:$\begin{align} x^{\overline{n}}&=(x+n-1)x^{\overline{n-1}}\\ &=(x+n-1)\sum_{k=0}^n \begin{bmatrix}n-1\\k \end{bmatrix}x^k\\ &=\sum_{k=0}^n \begin{bmatrix}n-1\\k \end{bmatrix}x^{k+1}+\sum_{k=0}^n  \begin{bmatrix}n-1\\k \end{bmatrix}x^k (n-1)\\ &=\sum_{k=1}^n \begin{bmatrix}n-1\\k-1 \end{bmatrix}x^{k}+\sum_{k=0}^n  \begin{bmatrix}n-1\\k \end{bmatrix}x^k (n-1)\\ &=\sum_{k=0}^n x^k (\begin{bmatrix} n-1\\k-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\k\end{bmatrix})\\ &=\sum_{k=0}^n \begin{bmatrix}n\\k\end{bmatrix} x^k\end{align}$

 

  上升幂转下降幂:$x^{\overline n}=(-1)^n(-x)^{\underline{n}}$

  下降幂转上升幂:$x^{\underline n}=(-1)^n(-x)^{\overline{n}}$

 

自然数幂次方和

  自然数幂次方和指的是这样的问题:$S_k(n)=\sum_{i=0}^ni^k$

  先介绍一个用第二类斯特林数解决的方案,该方案适合k小,n大的情况。

  $S_k(n)=\sum_{i=0}^ni^k$

  $=\sum_{i=0}^n\sum_{j=0}^k\binom{i}{j}\times j!\times \begin{Bmatrix} k\\j \end{Bmatrix}$

  $=\sum_{j=0}^kj!\times \begin{Bmatrix} k\\j \end{Bmatrix}\sum_{i=0}^n\binom{i}{j}$

  后面那个组合数的和怎么计算呢?考虑组合意义,对于任意一个 $\binom{i}{j}$ 的方案,我们再额外选一个i+1进去...这样每种方案就相当于“在n+1个中选出j+1个”。也就是说 $\sum_{i=0}^n\binom{i}{j}=\binom{n+1}{j+1}$;

  $S_k(n)=\sum_{j=0}^kj!\times \begin{Bmatrix} k\\j \end{Bmatrix}\binom{n+1}{j+1}$

  这样就能快速计算自然数幂之和啦!

 

posted @ 2020-06-28 21:33  shzr  阅读(364)  评论(3编辑  收藏  举报