逆元: 若 a*b=1(%p) 则a是b在%p意义下的逆元。 则在%p意义下 一个数 除以a就等价于乘b
两种求逆元方法:1、若p为质数时,则有性质则a^(p-1)=1(%p) 。 即a*a^(p-2)=1(%p)。 所以a的逆元就是a^(p-2)
2、exgcd(a,b,x,y) 可求 ax+by=c=gcd(a,b) 若a,b互质 则可求a%b下的逆元
Lucas定理:{
求C(n,m)在%p下的值 (p是质数) —— Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)
为什么要求 p是质数? 因为Lucas证明中 要用到 (1+a)^p=(1+a^p)(%p)这个p为质数才有的性质 因为x^p=x(%p)
}
实际上 求大组合数 真正用的是 求 n!%p 复杂度 是跟p的质因数分解有关的 p=ai^bi(1<=i<=k) 则复杂度应该是 ai^bi 的最大值
中国剩余定理(孙子定理){
给出以下的一元线性同余方程组:
假设整数m1,m2, ... ,mn两两互质,则对任意的整数:a1,a2, ... ,an,方程组有解,并且通解可以用如下方式构造得到:
设
—— M
是整数m1,m2, ... ,mn的乘积
—— Mi是除了mi以外的n- 1个整数的乘积。
(在%mi下)
则同余方程组 的通解形式为
那么在模M的意义下,方程组只有一个解:
}
时间: 2024-11-05 22:39:56