zoukankan      html  css  js  c++  java
  • 逆元

    意义

    若有  ,则x为a在模p下的逆元。

    一个分数是不能直接模运算的,但是可以进行乘法运算  

    实现

    欧拉定理

    由欧拉定理得,若gcd(a,p)=1,则

    得到,所以,为a在模p下的逆元。

    费马小定理

    对于质数p,若gcd(a,p)=1,则

    得到  ,是a在模p下的逆元,直接快速幂求解即可。

    扩展欧几里得

     ,可以得到 ,所以,用扩欧求x,y即可。

    阶乘逆元

    因为

    所以 ->  -> 

    代码

    void getinv() //fac[i]为i的阶乘
    {
      fac[1]=inv[0]=1;
      for(int i=2;i<=n;++i) fac[i]=fac[i-1]*i%mod;
      inv[n]=quick_pow(fac[n],mod-2);
      for(int i=n-1;i;--i)
        inv[i]=inv[i+1]*(i+1)%mod;
    }

    1 - n 逆元

    代码

    void getinv()
    {
      inv[0]=inv[1]=1;
      for(int i=2;i<=n;++i)
       inv[i]=inv[p%i]*(p-p/i)%p;
    }
    本博客仅为本人学习,总结,归纳,交流所用,若文章中存在错误或有不当之处,十分抱歉,劳烦指出,不胜感激!!!
  • 相关阅读:
    REST API注意事项
    Javascript addEventListener dispatchEvent
    Javascript常见操作
    MySql运算符
    Mysql数据类型
    MySql基本命令
    php学习
    javascript学习
    如何快速掌握一种技术
    站在K2角度审视流程--任务的独占与释放
  • 原文地址:https://www.cnblogs.com/VividBinGo/p/11425995.html
Copyright © 2011-2022 走看看