===== 大阶乘模质数学习笔记 ===== 以下参考了[[https://min-25.hatenablog.com/entry/2017/04/10/215046|这篇博客]]。 求 $n!\mod{p}(n当然常数跟多项式逆一样感人,但是肯定比多点求值的两个 $\log$ 加大常数好 但是有一个小问题,上式只有在所有的 $m+k-i$ 均不为 $0$ 时才成立($m=dv^{-1}+d+1,k=d$ 时除外,因为用不到),并且也只有这样才能用滑窗转移(转移时要做除法)。我们证明在本问题中,对于足够大的 $p$,$m+k-i$ 必然不为 $0$,注意到显然有 $d\le\frac{v}{2}$: * $m=d+1$ 时,$2d+1\le v+1=\lfloor\sqrt{n}\rfloor+1<\lfloor\sqrt{p}\rfloor+1\le p$。 * $m=dv^{-1}$ 或 $m=dv^{-1}+d+1$ 时,$m+k-i$ 为 $0$ 相当于存在 $-d\le x\le 2d$ 使得 $dv^{-1}+x\equiv 0\pmod{p}$。即存在 $-2d-1\le x\le d$ 使得 $d\equiv vx\pmod{p}$。显然 $x\ge-2d+1$ 时是不可能的。$x=-2d$ 时要有 $v\equiv -2^{-1}\pmod{p}$,这在 $p>2$ 时是不可能的。$x=-2d-1$ 时,$p=7,v=2,d=1$ 是一组反例,但是在 $5\times10^{7}$ 内没有找到其它反例(反正如前所述,这种情况没有用)。 不过如果其它问题中 $m+k-i$ 为 $0$ 了也没有关系。这样相当于我们已有和要求的两个等差数列有部分重合,那么重合的部分直接用原值就可以了。实现起来会稍微麻烦一点点。