zoukankan      html  css  js  c++  java
  • 线性求所有数模p的乘法逆元

    推理:

    假如当前计算的是x在%p意义下的逆元,设$p=kx+y$,则

    $Large kx+yequiv 0(mod p)$

    两边同时乘上$x^{-1}y^{-1}$(这里代表逆元)

    则方程变为$Large k*y^{-1}+x^{-1}equiv 0(mod p)$

    化简得$Large x^{-1}equiv -k*y^{-1}(mod p)$

    $Large x^{-1}equiv -iggllfloorfrac{p}{x}iggr floor *(p mod x)^{-1}(mod p)$

    结果为

    $Large x^{-1}equiv (p-iggllfloorfrac{p}{x}iggr floor )*(p mod x)^{-1}(mod p)$

    除了1,p mod x一定小于x,它的逆元已经算过,所以可以线性求出逆元

    void Inverse(int p,int a[],int n){//线性求<=n的数%p意义下的逆元 
        a[1]=1;
        for(int i=2;i<=n;i++){
            a[i]=1ll*(p-p/i)*a[p%i]%p;
        }
    }
  • 相关阅读:
    《入门经典》——6.25
    《入门经典》——6.24
    hdu4417
    poj2104(划分树模板)
    D. 实验室传染病
    poj2069
    poj1379
    hdu5950
    poj3417
    LCA——求解最近公共祖先
  • 原文地址:https://www.cnblogs.com/bennettz/p/7697787.html
Copyright © 2011-2022 走看看