Lucas定理
\[\binom{sp+q}{tp+r}\equiv\binom{s}{t}\binom{q}{r}\pmod{p}
\]
其中\(p\)为质数。
引理
\[\binom{p}{k}\equiv 0\pmod{p}
\]
其中\(p\)为质数,\(0<k<p\)
由
\[\binom{p}{k}=\frac{p!}{k!(p-k)!}
\]
可以发现分子中含因子\(p\),而分母中不含因子\(p\),而整体为整数,则引理得证。
证明
\[(1+x)^n\equiv(1+x)^{sp+q}\equiv((1+x)^p)^s(1+x)^q\pmod{p}
\]
由二项式定理及引理,\((1+x)^p\)的展开式中\(x^1,x^2,\cdots,x^{p-1}\)的系数皆同余\(0\),故略去。
\[(1+x)^{sp+q}\equiv(1+x^p)^s(1+x)^q
\]
注意:只能对多项式的系数\(\mod{p}\),因为我们最后要令两边对应次数项的系数相等,因此不能把\(x^p\)替换为\(x\)。
观察到,在\((1+x^p)^s\)的展开式中,只包含\(x^{kp}\)形式的项。而在\((1+x)^q\)的展开式中,最高次项小于\(x^p\)。那么,令两侧\(x^{tp+r}\)的系数相等,右侧就只能有唯一的一对乘积了。
那么就得证:
\[\binom{sp+q}{tp+r}\equiv\binom{s}{t}\binom{q}{r}\pmod{p}
\]
或者不严谨地写成:
\[\binom{n}{m}\equiv\binom{n/p}{m/p}\binom{n\%p}{m\%p}\pmod{p}
\]
代码
int C(int n,int m){
if(n<m)return 0;
if(n<p&&m<p)return fac[n]*finv[m]%p*finv[n-m]%p;
return C(n/p,m/p)*C(n%p,m%p)%p;
}
对于\(n,m<p\),预处理出答案。
时间复杂度\(O(log_p(n))\),预处理\(O(p)\)。

浙公网安备 33010602011771号