• Gcd&Exgcd


    欧几里得算法:

    [gcd(a,b)=gcd(b,amod b) ]

    证明:

    显然(大雾)

    扩展欧几里得及证明:

    为解决一个形如

    [ax+by=c ]

    的方程。

    根据裴蜀定理,当且仅当

    [gcd(a,b)|c ]

    时方程有解。

    然后解这个方程。。。

    我觉得大概就是:

    我们设

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

    [bx_2+(amod b) y_2=gcd(b,amod b) ]

    根据欧几里得以及(amod b=a-lfloor a/b floor)

    [ax_1+by_1=bx_2+(a-lfloor a/b floor)y_2 ]

    [ax_1+by_1=ay_2+bx_2-lfloor a/b floor y_2 ]

    根据恒等定理 (?)得:

    [x1=y2,y1=x2-lfloor frac{a}{b} floor *y2 ]

    然后我们知道,(gcd(a,b)|c)

    那么我们算出(ax+by=gcd(a,b))的答案来之后,只要把他乘上(c/gcd(a,b))就好啦。

    反正我知道代码哼唧

    Code

    
    void exgcd(int a, int b, int &x, int &y)
    {
        if(b == 0)
        {
            x = 1;y = 0;
            return;
        }
        exgcd(b,a%b,y,x);
        y-=a/b*x;
    	//计算ax+by=gcd(a,b)的值
    }
    
    
  • 相关阅读:
    Python进阶-数据库操作
    Python进阶-数据库(MySQL)介绍与基本操作
    Python进阶-网络编程之TCP粘包
    表与表之间的关系
    基本数据类型
    mysql
    io模型
    GIL,线程池与进程池
    线程
    并发编程,进程
  • 原文地址:https://www.cnblogs.com/oierwyh/p/11375115.html
Copyright © 2020-2023  润新知