do_while_true

一言(ヒトコト)

数论 2

以下 \(p\) 全是素数。

Wilson:素数 \(p\)\((p-1)!\equiv -1\pmod p\)

推论:计算 \(n!\) 所有数除去质因子 \(p\) 之后乘积 \((n!)_p\)\(p\):每 \(p\) 个分一组,散块暴力(或者预处理),整块的前 \(p-1\) 个 Wilson,最后一个全都除以 \(p\) 之后递归。

每个数和其逆元配对。仅需考虑逆元为本身即 \(x^2\equiv 1\pmod p\),仅有 \(x=1,-1\)

CRT:和拉插一样构造。\(x\equiv a_i\pmod {m_i}\),对于每个 \(a_i\) 配的系数要满足模 \(m_i\)\(1\),模其它的是 \(0\),那首先让其它的 \(m_j\) 乘起来,再乘上其在模 \(m_i\) 意义下的逆元,即为 \(a_i\) 前面配的系数。

Legendre 公式:\(p\)\(n!\) 中次幂为 \(v_p(n!)=\sum \lfloor\frac{n}{p^i}\rfloor=\frac{n-S_p(n)}{p-1}\),这里 \(S_p(n)\)\(p\) 进制数位和。

直接考虑所有 \(p\) 的倍数,全都除以 \(p\) 之后递归。由此归纳。

Kummer 定理:\(v_p(\binom{n}{m})=\frac{S_p(m)+S_p(n-m)-S_p(n)}{p-1}\)。常用推论:多重组合数模 2 当且仅当下标们二进制下两两不交。

Wilson 定理的推广:

\[(p^q!)_p\equiv \begin{cases} 1, & (p=2) \land (q\geq 3),\\ -1, & \text{otherwise}. \end{cases} \]

考虑配对。解 \(x^2\equiv 1\pmod {p^q}\)\(p^q=2\) 时只有 \(1\)\(p=2,q\geq 3\) 时有 \(\pm 1,2^{q-1}\pm 1\),其余情况仅有 \(\pm 1\)

现在和上文中同理,也能计算 \((n!)_p\bmod {p^q}\) 了,按 \(p\) 分组,按 \(p^q\) 分块。散块暴力,整块直接套用 Wilson 的推广,每组最后一个数单独拉出来,统一除以 \(p\) 以后递归算。

Lucas:\(\binom{n}{m}\equiv \binom{\left\lfloor n/p \right\rfloor}{\left\lfloor m/p\right\rfloor}\binom{n\bmod p}{m\bmod p}\pmod p\)

对于多项式 \(f(x)\) 满足 \(f^p(x)\equiv f(x^p)\pmod p\)

欲求 \(\binom{n}{m}=[x^m](1+x)^n=[x^m](1+x)^{p\cdot [n/p]}(1+x)^{n\bmod p}=(1+x^p)^{[n/p]}(1+x)^{n\bmod p}\).

而前者仅在 \(p\) 的次幂处有取值,后者次数 \(<p\),那么前者只能取 \(p[m/p]\) 这一项,后者只能取 \(m\bmod p\)。即得 Lucas 定理。

exLucas:

先将模数分解为 \(\prod p_i^{a_i}\),对每个 \(p_i^{a_i}\) 求答案然后 CRT 合并出来。现在问题就是求 \(\binom{n}{m}\pmod {p^a}\),用 Kummer 算 \(p\) 上的指数是多少,Wilson 推论算所有数除去 \(p\) 因子之后的乘积就行。

教练,我还想学这个 https://oi-wiki.org/math/number-theory/congruence-equation/

posted @ 2024-01-08 22:09  do_while_true  阅读(33)  评论(0编辑  收藏  举报