今天算法课老师讲了扩展gcd,就好好学了下

裴蜀定理

对于任意一对正整数a,b,一定存在非零整数x,y使得ax+by=(a,b),其中(a,b)为a和b的最大公约数。

裴蜀定理的常见应用和推论

  1. 可以用来判断方程ax+by=c是否有解,只要看c是否是(a,b)的倍数

2.如果z是a和b的最大公约数(a,b)的整数倍,则一定存在x,y使得ax+by=z

扩展欧几里得算法的应用

用于求解方程 \(ax+by=gcd(a,b) 的解\)

扩展欧几里得的手写版理解与手算推导递归实现的扩展GCD



核心代码实现

#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n;
int exgcd(int a,int b,int &x,int &y)
{
    if (!b)
    {
        x=1,y=0;
        return a;
    }
    int x1,y1,d;
    d = exgcd(b,a%b,x1,y1);
    x = y1, y = x1-a/b*y1;
    return d;
}
int main()
{
    scanf("%d",&n);
    while (n--)
    {
        int a,b,x,y;
        scanf("%d%d",&a,&b);
        int d = exgcd(a,b,x,y);
        printf("%d %d\n",x,y);
    }
    return 0;
}

原文地址:http://www.cnblogs.com/sdnu-dfl/p/16920691.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性