博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
exgcd模板
阅读量:5912 次
发布时间:2019-06-19

本文共 880 字,大约阅读时间需要 2 分钟。

逆元模板P1082

1 #include 
2 #include
3 4 int exgcd(int a, int b, int &x, int &y) { 5 if(!b) { 6 x = 1; 7 y = 0; 8 return a; 9 }10 int g = exgcd(b, a % b, x, y);11 std::swap(x, y);12 y -= (a / b) * x;13 return g;14 }15 16 int main() {17 int a, b;18 scanf("%d%d", &a, &b);19 int x, y;20 exgcd(a, b, x, y);21 x = (x % b + b) % b;22 printf("%d", x);23 return 0;24 }
exgcd

注意exgcd不仅可以求解ax+by=gcd,还可以直接求解

ax+by=c(gcd|c)

代码:

1 LL Val; 2 LL mygcd(LL a, LL b, LL &x, LL &y) { 3     if(!b) { 4         x = Val / a; 5         y = 0; 6         return a; 7     } 8     LL g = mygcd(b, a % b, x, y); 9     std::swap(x, y);10     y -= (a / b) * x;11     return g;12 }
mygcd

但是有个缺点,就是跟上面比起来可能会爆long long而出错(屠龙勇士)

关于exgcd的推导过程:

 

转载于:https://www.cnblogs.com/huyufeifei/p/10039099.html

你可能感兴趣的文章
一种将cmake编译成VS项目后更改绝对路径的方法和直接编译cmake程序的尝试
查看>>
不学无数——SpringBoot入门Ⅲ
查看>>
看看这些大龄程序员都做了些什么
查看>>
移动端高清方案
查看>>
Annotation注解配置
查看>>
OSChina 周六乱弹 —— 流氓软件是这样耍流氓的
查看>>
OSChina 周一乱弹 ——程序员跟产品经理撕逼必须掌握的套路
查看>>
OSChina 周四乱弹 —— 你从小继承了程序员基因
查看>>
maven公共仓库
查看>>
MyEclipse Site
查看>>
x-editable java 后台怎么写
查看>>
一个Maven的pom模板
查看>>
Nginx/LVS/HAProxy负载均衡软件的优缺点详解
查看>>
Installing and Using Standby Statspack in 11g
查看>>
Xms Xmx PermSize MaxPermSize 区别
查看>>
maven常见问题解决方法
查看>>
Object-C代码练习【复制对象的基本概念】
查看>>
Weakpass
查看>>
基于ArcFace2.0+红外双目摄像头的活体检测 [Windows][C#][.NET][WPF]
查看>>
关于 Mybatis的 $ 和 # , 你真的知道他们的细节吗?
查看>>