exLucas

和 Lucas 定理的唯一关系是求的东西一样。

我们要求 \(\dbinom{n}{m}\bmod{p^\alpha}\)

\((n!)_p\) 为把 \(n!\) 中所有等于 \(p\) 的质因子去掉之后的结果。比如 \((6!)_3=1\times 2\times 1\times 4\times 5\times 2\)

\(\dbinom{n}{m}\equiv p^{d}\dfrac{(n!)_p}{(m!)_p(n-m)!_p}\pmod{p^\alpha}\),其中 \(d\)\(v_p(n!)-v_p(m!)-v_p((n-m)!)\)

\(d\) 是好算的,而后面的分子分母都和 \(p\) 互质,所以只要能快速求 \((n!)_p\bmod p^\alpha\) 就行了。

观察规律,得到 \(\displaystyle (n!)_p\equiv \left(\prod_{1\le i<p^\alpha,i\perp p} i\right)^{n/p^\alpha}\left(\prod_{1\le i\le (n\bmod p^\alpha),i\perp p} i\right)(n/p)!_p\pmod{p^\alpha}\)。这里除法都是下取整,\(i\perp p\)\(i\)\(p\) 互质的意思。

结论:\(\displaystyle\left(\prod_{1\le i<p^\alpha,i\perp p} i\right)=\pm1\pmod{p^\alpha}\),并且答案是 \(-1\) 当且仅当模 \(p^\alpha\) 有原根,也就是 \(p\ge 3\) 或者 \(p=2\)\(\alpha\le 2\)。这意味着第一个 \(\prod\) 就是 \((\pm1)^{n/p^\alpha}\),可以 \(O(1)\) 计算。

所以 \(O(p^\alpha)\) 预处理第二个前缀积之后就可以递归下去,做到 \(O(\log_p n)\) 查询。可以用 CRT 拓展到模数是任意数的情况。

posted @ 2025-08-14 12:16  user_10086  阅读(18)  评论(0)    收藏  举报