zoukankan      html  css  js  c++  java
  • 逆元总结

    逆元是一个很有用的东西,还记得上半年不会逆元丢了许多许多分,最近算是恶补了一下,许多题都能AC了.

    它的作用是处理膜意义下的除法运算,因为膜的时候对除数取余是错误的,这个时候就要用到逆元.

    一.log2(mod)求mod为质数时任何数 的逆元

    long long mul(long long x,long long y)//快速乘
    {
        return ((x*y-(long long)(((long double)x*y+0.5)/mod)*mod)%mod+mod)%mod;
    }
        
    long long quick(long long  a,long long  b)
    {
    
        long long ans=1;
        for(;b;b>>=1,a=a*a%mod)//如果mod*mod溢出long long了就用快速乘
            if(b&1)ans=ans*a%mod;
        return ans%mod;
    }
    long long niyuan(a)
    {
        return quick(a,mod-2);
    }

    二.递推1到n的逆元

        iniyuan[1]=1;
        for(i=2;i<=n;i++)
            iniyuan[i]=(mod-mod/i)*iniyuan[mod%i]%mod;

    三.递推!1到!n的逆元(主要用于O(1)处理组合数)

        
        iniyuan[1]=niyuan[1]=1;;
        for(i=2;i<=n;i++)
            iniyuan[i]=(mod-mod/i)*iniyuan[mod%i]%mod;
        for( i=2;i<=n;i++)
            niyuan[i]=niyuan[i-1]*iniyuan[i]%mod;
  • 相关阅读:
    .net开发环境的选择
    html头部的一些信息
    SQLHelper类
    C#实现文件下载
    js类
    Winform小知识点
    emacs 代码缩进
    自己喜欢的shell终端配置
    time_wait过多的优化
    Emacs 电子邮件组件RMAIL
  • 原文地址:https://www.cnblogs.com/qywyt/p/9800020.html
Copyright © 2011-2022 走看看