[QBXT游记]Day3 Moring
作者:互联网
组合数求模
也就是求 C(n,m)%p=?
Lv.1
其中n,m<=2000,p为任意整数
根据题意大约能看出是\(O(n^2)\)的算法可求
我们知道C(n,m)=[C(n-1,m-1)+C(n-1,m)]%p
所以我们能知道这个数最大能到达杨辉三角的第2000行,可以直接预处理的时候把每个数%p即可
Lv.2
其中n,m<=106,p>=109且为质数
根据定义柿:C(n,m)%p=\(\frac{n!}{n!(n-m)!}\)%p=n!%p x (m!)-1%p x (n-m)-1%p
因为p是质数,所以对于这个柿子,任何数的逆元一定存在
Lv.3
其中n,m<=106,p<=2000且为质数
因为n,m都可能比p大,所以刚才那个做法里面的逆元不存在
这里引入一个新的定理:卢卡斯定理
对于n和m,已知p为质数,n和m都能表示为p进制:\(n=n_k+n_{k-1}+\cdots+n_1\),m同理(这里要保证位数能一致,不够的加上前导0
内容:参见OIwiki,经过lucas分解之后就能得到一个p进制的形式,那样的话逆元是存在的,就可以用Lv2的方法求了
LV.4
其中n,m<=106,p=p1*p2,p1和p2都<=2000且为质数
能知道C(n,m)%p1=a1,C(n,m)%p2=a2(利用刚才的方法)
可以使用连理方程组后Excrt求解
x%p1=a1
x%p2=a2
标签:Moring,组合,...+,sum,Day3,QBXT,A2,抽屉,define 来源: https://www.cnblogs.com/HRiver2/p/HR2note23.html