同余 && 逆元

作者: Vincy_ivy | 来源:发表于2020-02-06 21:44 被阅读0次

参考及引用大佬博客
https://www.cnblogs.com/kongbursi-2292702937/p/10582258.html
https://blog.csdn.net/tobeyours/article/details/79619333

同余

定义
给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m),假设,100-60除以8正好除尽,则100和60对于模数8同余

主要性质
加法:(a+b)%d=(a%d+b%d)%d
减法:(a-b+mod)%mod;


逆元

定义
当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:
设c是b的逆元,则有b * c≡1(mod m);
则(a/b)%m = (a/b)* 1%m = (a/b) * b * c%m = a * c(mod m);
即a/b的模等于a*b的逆元的模;

(1)费马小引理
前提:a和p互质


代码实现:快速幂
long long quickpow(long long a,long long b){
    if(b<0)
        return 0;
    long long ret=1;
    a%=mod;
    while(b){
        if(b&1){ //如果是奇数
            ret=(ret*a)%mod;
        }
        b>>=1;
        a=(a*a)%mod;
    }
    return ret;
}

long long inv(long long a){
    return quickpow(a,mod-2);
}

补充:快速幂+快速乘
当a,b很大的时候 在10^9时,用常规的方法就容易超时

long long quickmul(long long a,long long b,long long mod){
    long long ret=0;//这里是初始化为0
    while(b){
        if(b&1){ //如果是奇数
            ret=(ret+a)%mod;
        }
        b>>=1;
        a=(a*a)%mod;
    }
    return ret;
}

long long quickpow(long a,long b,long mod){
    long long ret=1;
    while(b){
        if(b&1){
            ret=quickmul(ret,a,mod);
        }
        a=quickmul(a,a,mod);
        b>>=1;
    }
    return ret;
}

(2)扩展欧几里得算法


辗转相除法:

算法证明:a和m互质

求逆元:
ll extend_gcd(ll a, ll b, ll &x, ll &y) {
    if (b == 0) {
        x = 1, y = 0;
        return a;
    }
    else {
        ll r = extend_gcd(b, a % b, y, x);
        y -= x * (a / b);
        return r;
    }
}
ll inv(ll a, ll n) {
    ll x, y;
    extend_gcd(a, n, x, y);
    x = (x % n + n) % n;
    return x;
}

相关文章

  • 同余 && 逆元

    参考及引用大佬博客https://www.cnblogs.com/kongbursi-2292702937/p/1...

  • 扩展GCD(求逆元,解同余方程等等)

    首先要知道gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(|a|,|b|)=gcd(b,a%b)...

  • 利用扩展的欧几里得算法求逆元

    首先说一下逆元的定义。存在一个数a使得ax对y进行取余运算,得到的值是一,则成为a是x的逆元。在数学中记做a * ...

  • 逆元

    什么是逆元 来自一个大佬的解释,反正我是看懂了。。 乘法逆元: 模p意义下,一个数a如果有逆元x,那么除以a相当于...

  • 资格赛 A题

    画图说话: 分析:9937 为质数,费马小定理+逆元,除法变乘法,快速幂取余 费马小定理 公式推导:(b/a)mo...

  • 同余

    定义若整数a和整数b,除以正整数m得到的余数相等,成a,b模m同余,记作。费马小定理若p是质数,gcd(a,p)=...

  • 20171208daliy

    1. 无符号数加法 溢出和-2^w 2.无符号数求反。 x=0 逆元=0 x>0 逆元=2^w-x

  • 同余式与同余类

    第二章 同余 同余式与同余类 模 同余 设 是非零整数, 和 是整数. 如 ,则称 和 模 同余 (...

  • 乘法逆元

    若整数b,m互质,并且,则存在一个整数x,使得。称x为b的模m乘法逆元,记为。因为,所以。计算乘法逆元有两个方法费...

  • 求逆元

网友评论

    本文标题:同余 && 逆元

    本文链接:https://www.haomeiwen.com/subject/otiuxhtx.html