zoukankan      html  css  js  c++  java
  • 乘法逆元

    普通求逆元

    [ax≡1 (mod p) ]

    其中(x)就是(a)在模(p)意义下的乘法逆元((inv))

    (gcd(a,p)=1)时存在,即(a)在模(p)意义下有逆元的充要条件是(a, p)互质

    计算等价于解方程(ax+bp=1)

    定义了剩余系中的除法(frac{a}{b}≡a × inv_p(b) (mod p))

    费马小定理也求乘法逆元

    费马小定理:若(p)为质数,且(gcd(a,p)=1)(a, p)互质),那么(a^{p-1}≡1(mod p))

    两侧同除(a),即得到(a)的逆元:(inv_p(a)≡a^{p-2}(mod p)),用快速幂计算即可

    线性求逆元

    (p=ka+b(1<a<b<p)),得

    [ka+b≡0 (mod p) ]

    等式两边同除(ab),得

    [inv(a)≡-k×inv(b) (mod p) ]

    [inv(a)≡-lfloorfrac{p}{a} floor×inv(p mod a) (mod p) ]

    (code:)

    for(int i=2;i<=n;++i) inv[i]=(p-p/i)*inv[p%i]%p;
    
    /*inv[i]=-p/i*inv[p%i];
    inv[i]=((inv[i])%p+p)%p;*/
    

    若所需求逆元的数不连续,考虑用前缀积解决

    (s_i=prodlimits_1^na_i)

    先求出(inv(s_n)),那么(inv(a_n)=inv(s_n)×s_{i-1})

    同时(inv(s_{i-1})=inv(s_i)×a_i)

    于是便可以递推求解

    (code:)

    for(int i=n;i;--i)
    {
    	inv[i]=(s[i]*s[i-1])%mod;
    	s[i-1]=(s[i]*a[i])%mod;
    }
    
  • 相关阅读:
    CSS基础(二)-- CSS选择器之ID选择器
    CSS基础(一)-- CSS的存在形式以及优先级
    HTML--Boby部分之fieldset标签
    HTML--Boby部分之label标签
    HTML--Boby部分之表格
    HTML--Boby部分之<img>标签
    rpm和yum的用法
    网络模型
    内存扩容
    磁盘介绍
  • 原文地址:https://www.cnblogs.com/lhm-/p/12229639.html
Copyright © 2011-2022 走看看