zoukankan      html  css  js  c++  java
  • 欧几里得学习笔记

    GCD

    \(gcd(x,y)=gcd(x,y-x)\)

    int GCD(int x,int y){return y? x:GCD(y,x%y);}
    

    EXGCD

    扩展欧几里得用于求一组特解 \((x,y)\) 使得 \(ax+by=(a,b)\)

    \(\because ax+by=(a,b)\)

    \(\therefore ax+by=(b,a\bmod b)=bx+(a\bmod b)y=bx+(a-\lfloor\frac{a}{b}\rfloor b)\times y=ay+(x-\lfloor \frac{a}{b} \rfloor y) \times b\)

    \(ax+by=ay+(x-\lfloor \frac{a}{b} \rfloor y) \times b\)

    所以只要每次递归进行以下操作

    inline ll exgcd(ll a,ll b,ll &x,ll &y){
        if(!b){x=1,y=0; return a;}
        ll ret=exgcd(b,a%b,y,x); y-=a/b*x;
        return ret;
    }
    

    求逆元

    \(a\times x \equiv 1\pmod b\),且 \(gcd(a,b)=1\),则称 \(x\)\(a\) 的逆元,记为 \(a^{-1}\)

    可以用扩展欧几里得求解。

    LL inv(int a,int mod){
        LL x,y;
        LL tmp=exgcd(a,mod,x,y);
        return tmp==1?(x%mod+mod)%mod:-1;
    }
    

    线性处理

    \(p=k\times i+r\),则有 \(k\times i+r \equiv 0 \pmod p\)

    \(k\times r^{-1}+i^{-1} \equiv 0 \pmod p\)

    \(i^{-1} \equiv -k\times r^{-1} \pmod p\)

    \(i^{-1} \equiv -[\frac{p}{i}]\times (p \bmod i)^{-1} \pmod p\)

    inv[i]=-(p/i)*inv[p%i];
    

    求解线性同余方程

    1.对于方程 \(a\times x + b\times y=c\),该方程等价于 \(a\times x \equiv c \pmod b\),有解的充分必要条件是 $gcd(a,b)|c $$

    2.若 \(gcd(a,b)=1\),且 \(x_0,y_0\)\(a\times x+b\times y=c\) 的一组特解。

    则该方程的任意解可以表示为 \(x=x_0+b\times t\)\(y=y_0-a\times t\)

    特别的,若要求最小非负整数 \(x\) , 则令 \(t=\frac{b}{gcd(a,b)}\),再令 \(x=(x\bmod t+t)\bmod t\)

    bool solve(int a,int b,int c,int &x,int &y){
        int d=exgcd(a,b,x,y);
        if(c%d) return false;
        int k=c/d;
        x*=k;y*=k;
        return true;
    }
    
  • 相关阅读:
    计算机中丢失OPENGL.dll
    BAT或赌在当下或押在未来,谁是王者?
    singleton
    计算机原理扫盲
    汇编扫盲
    sublime text 3 使用过程总结记录
    sublime text3侧边栏主题不生效问题解决
    atom初体验
    Sublime Text 3 快捷键总结
    微信后台开发第一步:nodeJS+express接入微信后台详细教程
  • 原文地址:https://www.cnblogs.com/wwlwQWQ/p/10492436.html
Copyright © 2011-2022 走看看