Lucas
我们要求:\(C_n^m\%p\)的值,\(p\)为质数。
那么让\(n=sp+q,m=tp+r,(q<p,r<p)\)
我们用
\(\tbinom{n}{m}\)表示\(C_n^m\)。
根据二项式定理,\((1+x)^n=C_n^0x^0+C_n^1x^1+...+C_n^nx^n\)。
那么\((1+x)^n\equiv(1+x)^{sp+q}\equiv ((1+x)^p)^s\times (1+x)^q \ (mod \ p)\)
比较重要的一步到了,因为\(\tbinom{n}{m}=\frac{n!}{(n-m)!m!}\),如果\(n\)为质数,那么无论\(m\)取多少,只要\(m\ne 0\)或\(m\ne n\),则\(\tbinom{n}{m}\equiv 0 \ (mod \ n)(m\ne0,m\ne n).\)
那么现在得:\(((1+x)^p)^s\times (1+x)^q \equiv (1+x^p)^s\times (1+x)^q \ (mod \ p)\)
那么,根据二项式定理:
\((1+x^p)^s=C_s^0x^{0}+C_s^1x^{p}+C_s^2x^{2p}...+C_s^sx^{sp}\)
\((1+x)^q=C_q^0x^{0}+C_q^1x^{1}+C_q^2x^{2}...+C_q^qx^{q}\)
化简:\((1+x)^{sp+q}=\sum _{i=0}^s\tbinom{s}{i} x^{ip} \sum _{j=0}^q\tbinom{q}{j}x^j\)
由于\(p>q\),所以\(ip+q\)唯一。
所以对于\(m=tp+r\)项的,一定是 \(\tbinom{n}{m}x^m=\tbinom{sp+q}{tp+r}x^{tp+r}\equiv\tbinom{s}{t}x^{tp}\tbinom{q}{r}x^r\equiv\tbinom{s}{t}\tbinom{q}{r}x^{tp+r} \ (mod\ p)\)
得:\(\tbinom{sp+q}{tp+r}\equiv\tbinom{s}{t}\tbinom{q}{r} \ (mod\ p)\)
可以快速求出\(\tbinom{n}{m}\equiv \tbinom{sp+q}{tp+r}\equiv\tbinom{s}{t}\tbinom{q}{r} \ (mod\ p)\)