qbxt五一数论Day3

1. 组合数取模

求 \(\dbinom nm\bmod p\)

1. \(n,m\le 200\),\(p\) 任意

递推

2. \(n,m\le 10^6\),\(p\ge 10^9\) 素数

预处理 \(n!\),\(m!^{-1}\),\((n-m)!^{-1}\) 即可 .

3. \(n,m\le 10^6\),\(p\le 2000\) 素数

注意到 \(n\) 可能是 \(p\) 的倍数,故逆元可能不存在 .

引入 Lucas 定理:

设 \(n,m\) 在 \(p\)(\(p\) 是质数)进制下表示为

\[\overline{n_kn_{k-1}n_{k-2}\dots n_1}\,,\overline{m_km_{k-1}m_{k-2}\dots m_1} \]

其中 \(0\le n_i<p\),\(0\le m_i<p\) .

则有:

\[\dbinom{n}{m}\equiv \dbinom{n_k}{m_k}\dbinom{n_{k-1}}{m_{k-1}}\cdots\dbinom{n_1}{m_1}\pmod p \]

Proof:
原问题等价于 \(C^n_m\equiv C^{n\bmod p}_{m\bmod p}\cdot C^{\lfloor n/p\rfloor}_{\lfloor m/p\rfloor}\pmod p\) .

设 \(x\in\mathbb N^+\),且 \(x<p\),则:

\[C^x_p=\dfrac{p!}{x!(p-x)!}=\dfrac{p\cdot (p-1)!}{x\cdot(x-1)!\cdot(p-x)!}=\dfrac px\cdot C^{x-1}_{p-1} \]

由于 \(x<p\) 且 \(p\) 是素数,所以 \(x\) 存在模 \(p\) 意义下的逆元,因此:

\[C^x_p\equiv p\cdot x^{-1}\cdot C^{x-1}_{p-1}\pmod p \]

因为 \(p\cdot x^{-1}\cdot C^{x-1}_{p-1}\equiv 0\pmod p\) ,故 \(C^x_p\equiv0\pmod p\).

由二项式定理,

\[(1+x)^p=\sum_{i=0}^pC_p^ix_i \]

除了 \(i=0,i=p\) 的项数,别的模 \(p\) 均为 \(0\),所以:

\[(1+x)^p\equiv 1+x^p\pmod p \]

现在我们设:

\[\begin{cases}\lfloor m/p\rfloor=q_m\\\lfloor n/p\rfloor=q_n\end{cases}\ ,\ \begin{cases}m\bmod p=r_m\\n\bmod p=r_n\end{cases} \]

从而:

\[\begin{cases}m=q_mp+r_m\\n=q_np+r_n\end{cases} \]

再由二项式定理有

\[(1+x)^m=\sum_{i=0}^mC_m^ix_i \]

而同时又有:

\[\begin{aligned}(1+x)^m&=(1+x)^{q_mp+r_m}\\&=(1+x)^{q_mp}\cdot(q+x)^{r_m}\\&=((1+x)^q)^{m_p}\cdot(q+x)^{r_m}\\&\equiv (1+x^p)^{q_m}\cdot(1+x)^{r_m}\\&=\sum_{i=0}^{q_m}C^i_{q_m}x^{ip}\sum_{i=0}^{r_m}C^i_{r_m}x^{i}\\&=\sum_{i=0}^{q_m}\sum_{j=0}^{r_m}C^i_{q_m}C^j_{r_m}x^{ip+j}\pmod p\end{aligned} \]

注意到 \(ip+j\) 正好能取到 \(0\) 到 \(m\) 内所有整数一次,所以枚举 \(k=ip+j\),得

\[(x+1)^m\equiv \sum_{k=0}^n C_{q_m}^{\lfloor k/p\rfloor}C_{r_m}^{k\bmod p}x^k\pmod p \]

结合二项式定理,得

\[\sum_{k=0}^mC^k_mx^k\equiv \sum_{k=0}^n C_{q_m}^{\lfloor k/p\rfloor}C_{r_m}^{k\bmod p}x^k\pmod p \]

对比系数,得:

\[C^n_m\equiv C^{n\bmod p}_{m\bmod p}\cdot C^{\lfloor n/p\rfloor}_{\lfloor m/p\rfloor}=C_{q_m}^{q_n}C_{r_m}^{r_n}\pmod p \]

命题获证 .

4. \(n,m\le 10^6\),\(p=p_1p_2\cdots p_k\),\(p_1,p_2,\cdots,p_k\le 2000\) 为互不相同的素数

\[A=\dbinom nm \]

\[\begin{cases}A\equiv \dbinom nm\bmod p_1\pmod p_1\\A\equiv \dbinom nm\bmod p_2\pmod p_2\\\cdots\\A\equiv \dbinom nm\bmod p_k\pmod p_k\end{cases} \]

用 Lucas 定理求组合数,然后 CRT 合并即可

上一篇:CF1305G - Kuroni and Antihype


下一篇:[集训整理]QBXT - DP - Day1