数论

【逆元】: 若 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下的逆元 (可以证明,扩展欧几里得 的运算过程 x,y不会超过max(a,b))

威尔逊定理: 当且仅当p为质数时,有  (p-1)! ≡ p-1 ≡ -1 (%p)

因为 1~ p-1  中,除了  1和p-1 , 其余的都能两两配对、互为逆元。

欧拉定理

  对于互质的整数x,p,xφ(p) ≡ 1 (%p)

广义欧拉定理

  对于任意整数x,p, 若n>=φ(p)  ,则 xn ≡ xn%φ(p)+φ(p)  (%p)。

  对比普通欧拉定理,如x=3,p=6,  30=1,  3= 3= 3= ... = 3

【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的意义下,方程组只有一个解:
  
}
 
 
【BSGS & exBSGS】
 求a^x = b (%p)   gcd(a,p)=1
 考虑分块,设S=sqrt(p),
   a^(kS-t) = b
 然后预处理 b* a^t  ,再暴枚k,求得x
 
 exBSGS: 针对  gcd(a,p)≠1
  a^x = b (%p)
  a * a^(x-1) =b (%p)
 [d = gcd(a,p)]
  (a/d) * a^(x-1) = (b/d) ( %(p/d) )
  然后递归子问题
 
 
原文地址:https://www.cnblogs.com/cyz666/p/6698512.html