写完才发现基本就是余ay博客里的一样。。
定理:
(mn)=(m/pn/p)×(m%pn%p)(modp)(^n _ m)=(^{n/p}_ {m/p})\times (^{n \% p}_ {m \% p})(mod p)
这样当pp比较小的时候就可以快速处理出很大的组合数。

一个小性质:
n%p<m%pn\%p < m\%p时,(mn)0(modp)(^n_ m) \equiv 0(mod p)
n=ap+b,m=cp+dn=ap+b,m=cp+d
此时b<db<d,所以nm=(ac1)p+(p+bd)n-m=(a-c-1)p+(p+b-d)
这样会n!n!中所含的pp的倍数的个数为aam!(nm)!m!(n-m)!中所含的pp的倍数的个数为a1a-1
还没有考虑n!n!中出现pk(k>1)p^k(k>1)的频率更高的问题。
这样n!m!(nm)!\frac{n!}{m!(n-m)!}一定就是pp的倍数了

前置:二项式定理(其实就是暴力展开……)
(a+b)n=i=0n(in)aibni(a+b)^n=\sum_{i=0}^n (^n _i) a^ib^{n-i}

前置:费马小定理
ap11(modp)a^{p-1} \equiv 1(mod p)(p是质数)

所以:
xxp(modp)x \equiv x^p(mod p)
(1+x)p1+x1+xp(modp)(1+x)^p \equiv 1+x \equiv 1+x^p (mod p)

这里通过二项式定理证明。

(设a=n/p,b=n%p,c=m/p,d=m%pa=n/p,b=n\%p,c=m/p,d=m\%p)
现在有:

(1+x)n(1+x)a×(1+x)b(modp)(1+x)^n \equiv (1+x)^a \times (1+x)^b (mod p)
(1+x)n(1+xp)a×(1+x)b(modp)(1+x)^n \equiv (1+x^p)^a \times (1+x)^b(mod p)
(1+x)ni=0a(ia)xip×j=0b(jb)xj(modp)(1+x)^n \equiv \sum_ {i=0} ^a(^a_ i)x^{i*p} \times \sum_ {j=0} ^b(^b_ j)x^{j}(mod p)
同时根据二项式定理有:
(1+x)ni=0n(in)xi(modp)(1+x)^n \equiv \sum_ {i=0} ^n(^n_ i)x^i(mod p)
观察一下这两个式子第mm项的系数
(mn)(^n_ m)(ia)(jb)(i<p,j<p)(^a_ i)(^b_ j)(i<p,j<p)
然而右边那个带回原字母定义有(m/pn/p)×(m%pn%p)(^{n/p}_ {m/p}) \times (^{n\%p}_ {m\%p})
OAO