(Ex)Lucas&CRT // Kalthyix

我将进行更多的文字叙述以保证大家的体验

我将更多地直接给出证明和结论而非思考过程

放点组合数学原理吧,至少有用,关键是我只会这个。不打算放很多题。
请注意区分 \(=\)\(\equiv\)

CRT

没用,请直接学习 ExCRT。

ExCRT

我记得之前有人讲过。相信大家都会,但我为了水字数,所以再写一下。

ExCRT 用来求同余方程组的解。

只有两个方程

我们先考虑求 \(2\) 个同余方程的解:

\[x \equiv r_1 (\bmod \space m_1) \\ x \equiv r_2 (\bmod \space m_2) \]

我们直接蛇:

\[x = k_1m_1+r_1 = k_2m_2+r_2 \]

那么:

\[k_1m_1-k_2m_2 = r_2-r_1 \]

我们现在求一组 \(k_1\)\(k_2\) 的解。

由裴蜀定理,当且仅当 \(\gcd(m_1,m_2)\space| \space (r_2-r_1)\) 时有解。记得要先判有没有解。

裴蜀定理:
若存在 \(x\)\(y\) 使 \(ax+by=n\) 成立,则 \(\gcd(a,b) \space | \space n\)

确认有解之后,我们直接继续蛇 \(d = \gcd(m_1,m_2)\)

现在我们把原柿写成:

\[k_1\frac{m_1}{d} - k_2\frac{m_2}{d} = \frac{r_2-r_1}{d} \]

不难发现 \(\gcd(\frac{m_1}{d},\frac{m_2}{d}) = 1\),于是我们直接扩欧求这个柿子的解。

然后再蛇求出来解为:

\[k_1 = \frac{r_2-r_1}{d}\beta_1 \\ k_2 = \frac{r_2-r_1}{d}\beta_2 \]

直接带回原柿:

\[x = k_1m_1+r_1 = \frac{r_2-r_1}{d}\beta_1m_1+r_1 \]

于是我们求得了上面两个同余方程的解。

好几个方程

现在求 \(n\) 个同余方程的解。

假设我们求出了前两个方程的解为 \(x\)

则对于前两个方程,通解为 \(X_i = x+k\cdot lcm(m_1,m_2)\)

\(X_i \equiv x\pmod {lcm(m_1,m_2)}\)

我们发现我们又构造了一个新的同余方程,且这个方程的解满足先前两个方程。

此时两个同余方程被合并为了一个。

然后一直合并下去就行了。

Lucas

这个大家应该都非常会。其实打完 ExCRT 我已经快Ⅳ了,所以我们直接下一个。

ExLucas

\(C_n^m \% P\)\(P\) 不为质数。

朴素想法

直接质因数分解 \(P = \prod_{i=1}^{k} p_{i}^{c_i}\)

列出 \(k\) 个方程 \(C_n^m \equiv r_i (\bmod \space p_i^{c_i})\)

然后 ExCRT 合并。

然而

然而,\(C_n^m = \frac{n!}{m!(n-m)!}\)\(m!(n-m)!\)\(p^{c}\) 可能不互质。

在域内求不了逆元那你不炸了......朴素想法还是不美妙啊。

那直接把 \(C_n^m\) 中的所有 \(p\) 分离出来,最后再乘回去不就完事了吗:

\[C_n^m = \frac{\frac{n!}{p^{k_1}}}{\frac{m!}{p^{k_2}}\cdot\frac{(n-m)!}{p^{k_3}}}\cdot p^{k_1+k_2+k_3} \]

使得 \(\gcd(n!,p^{k_1}) = \gcd(m!,p^{k_2}) = \gcd((n-m)!,p^{k_3}) = 1\)

子问题变为求 \(\frac{n!}{p^k} \% p^c\) 和其中的 \(k\)

直接拆开阶乘,把 \(p\) 的倍数全提出来:

\[n! = \prod_{i=1}^{n} i = (\prod_{i=1}^{\lfloor\frac{n}{p}\rfloor} i\cdot p) \cdot (\prod_{i=1,p\nmid i}^{n}i) = (\frac{n}{p})!\cdot p^{\lfloor\frac{n}{p}\rfloor} \cdot \prod_{i=1,p\nmid i}^{n} i \]

上面的柿子中,\(p^{\lfloor\frac{n}{p}\rfloor}\) 直接求了;\((\frac{n}{p})!\) 递归求;\(\prod_{i=1,p\nmid i}^{n} i\) 继续分解。

现在我们考虑 \(\prod_{i=1,p\nmid i}^{n} i\)\(\bmod \space p^c\) 下的运算:

\[\prod_{i=1,p\nmid i}^{n} i = (\prod_{t=1}^{\lfloor \frac{n}{p^c}\rfloor}\prod_{i=1,p\nmid i}^{p^c}(i+t\cdot p^c))\cdot (\prod_{i=p^c\cdot\lfloor\frac{n}{p^c}\rfloor+1,p\nmid i}^{n}i) \]

此时有一个美妙的性质 \(x \equiv t\cdot m+y \space (\bmod\space m)\)

\[\prod_{i=1,p\nmid i}^{n} i \equiv (\prod_{i=1,p\nmid i}^{p^c}i)^{\lfloor \frac{n}{p^c}\rfloor}\cdot (\prod_{i=p^c\cdot\lfloor\frac{n}{p^c}\rfloor+1,p\nmid i}^{n}i) \space (\bmod \space p^c) \]

上面的柿子中 \((\prod_{i=1,p\nmid i}^{p^c}i)^{\lfloor \frac{n}{p^c}\rfloor}\)\((\prod_{i=p^c\cdot\lfloor\frac{n}{p^c}\rfloor+1,p\nmid i}^{n}i)\) 项数实际并不会很多,枚举一下得了。

现在我们已经会求 \(\frac{n!}{p^k} \% p^c\),然后求其中的 \(k\)

其实我们发现 \(k\) 的贡献来源与 \(n!\) 分解中的 \((\frac{n}{p})!\cdot p^{\lfloor\frac{n}{p}\rfloor}\)

\((\frac{n}{p})!\) 的贡献递归求;\(p^{\lfloor\frac{n}{p}\rfloor}\) 会贡献 \(\lfloor\frac{n}{p}\rfloor\)

现在我们会求了 \(\frac{n!}{p^k} \% p^c\) 和其中的 \(k\)

然后我们就可以求 \(C_n^m \% p^c\) 了!

接下来列出方程组 \(C_n^m \equiv r_i (\bmod \space p_i^{c_i})\),就可以愉快地用 ExCRT 合并了。


接下来是一些需要运用以上的东西的玩意

多重集合

多重集合排列

\(n\) 个物品划分为 \(k\) 个集合,集合 \(i\) 大小为 \(c_i\),求总方案数。

我们尝试转换一下问题:
\(k\) 种物品,第 \(i\) 种物品有 \(c_i\) 个,用 \(n\) 个物品。求将这些物品排成一排的不同方案数。

\(\sum_{i=1}^k c_i >n\),无解。

\(sum_{i=1}^k c_1=n\),总方案数为 \(\frac{\sum_{i=1}^k (c_i)!}{\prod_{i=1}^{k}(c_i)!} = \frac{n!}{\prod_{i=1}^{k}(c_i!)}\)

\(sum_{i=1}^k c_i<n\),令 \(c_{k+1} = n-sum_{i=1}^k c_i\) 即可。

但大部分时候我们要在 \(\bmod P\) 意义下进行。

发现这玩意和 \(C_n^m\) 简直一模一样,于是把组合数拆开,然后 ExLucas 即可。

多重集合组合

\(n\) 种元素,从中选 \(k\) 个,有几种可行方案。

我们尝试转换一下问题:
\(k\) 个元素,分为 \(n\) 堆,允许存在空集。

如果不存在空集,那隔板法答案为 \(C_{k+1}^{n-1}\)

然而,允许存在空集,即可以存在”空“这种元素,故答案为 \(C_{n+k-1}^{n-1}\)

如果此时我们再加一个条件,使得划分的集合每个大小不超过 \(c_i\),那么容斥即可。

不难想到在 \(\bmod P\) 意义下,需要 ExLucas。


题 !!!

你别管我扔啥题,反正我就只做过那点题。。。

P2606 [ZJOI2010] 排列计数

\(p_i > p_{\lfloor \frac{i}{2} \rfloor}\) 是个小根堆,题目需要求满足小根堆性质的排列方案数。

把这个问题拎到小根堆上,思考其中一个子树。

它的大小为 \(siz\),左子树内有 \(ls\) 个点,右子树有 \(siz-ls-1\) 个点。

只要保证它的根是最小的,其余左右子树的 \(siz-1\) 个点在左右子树中可以任选。

\(dp_u\) 为以 \(u\) 为根的方案数。

那么 \(dp_u = C_{siz-1}^{ls} \times dp_{ls} \times dp_{rs}\)

Lucas 再求一下 C 就行了。

P2183 [国家集训队] 礼物

孩子,如果你认真阅读了上面的内容,你将发现这就是多重集合排列板题。

posted @ 2025-05-29 21:50  Tmbcan  阅读(43)  评论(0)    收藏  举报