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

    (ax_1+by_1=gcd(a,b))

    (bx_2+(amod b)y_2=gcd(b,a mod b))

    ( herefore gcd(a,b)=gcd(b,a mod b))

    (ecause ax_1+by_1=bx_2+(amod b)y_2)

    ( herefore a mod b=a-lfloorfrac{a}{b} floor imes b)

    (ecause ax_1+by_1=bx_2+(a-lfloorfrac{a}{b} floor imes b)y_2)

    我们利用乘法分配律,把这个式子展开

    (bx_2+(a-lfloorfrac{a}{b} floor imes b)y_2=bx_2+ay_2-lfloorfrac{a}{b} floor imes by_2)

    然后,我们把 (b) 提出来

    (bx_2+ay_2-lfloorfrac{a}{b} floor imes by_2=ay_2-b(x_2-lfloorfrac{a}{b} floor imes y_2))

    然后,我们发现 (x_1=y_2,y_1=x_2-lfloorfrac{a}{b} floor imes y_2)

    这样,代码就好写了。

    int exgcd(int a,int b,int &x,int &y){
        if(!b){
            x=1;
            y=0;
            return a;
        }
        int d=exgcd(b,a%b,x,y);
        int t=x;
        x=y;
        y=t-a/b*y;
        return d;
    }
    
  • 相关阅读:
    Samba
    百度贴吧
    baidu.com关键字查询
    vim 删除每行开头结尾空格
    read line(逐行读取)
    pycharm 激活
    rsync 启动脚本
    收藏
    elk
    sql is null
  • 原文地址:https://www.cnblogs.com/zhaohaikun/p/12483577.html
Copyright © 2011-2022 走看看