首页 > 其他分享 >扩欧学习笔记

扩欧学习笔记

时间:2023-01-18 23:56:41浏览次数:44  
标签:lfloor right gcd int 笔记 学习 bx 扩欧 mod

扩欧这玩意儿暑假就学了,但是一直仅限于背 \(y=\cdots\),背完就忘,于是搞个学习笔记加深印象。

解方程 \(ax+by=\gcd(a,b)\)

设 \(ax_1+by_1=\gcd(a,b)\),\(bx_2+(a\mod b)y_2=\gcd(b,a\mod b)\)。

根据欧几里得算法可知,\(\gcd(a,b)=\gcd(b,a\mod b)\)。

所以 \(ax_1+by_1=bx_2+(a\mod b)y_2\)。

又 \(\begin{aligned}bx_2+(a\mod b)y_2&=bx_2+(a-\left\lfloor\frac{a}{b}\right\rfloor\times b)y_2\\&=b(x_2-\left\lfloor\frac{a}{b}\right\rfloor y_2)+ay_2\end{aligned}\)

又 \(a,b\) 相同,所以 \(x_1=y_2,y_1=x2-\left\lfloor\frac{a}{b}\right\rfloor y_2\)。

\(b=0\) 时 \(x=1,y=0\),递归求解即可。

code:

点击查看代码
int n,m;
int ex_gcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return a;
	}
	int ret=ex_gcd(b,a%b,y,x);
	y-=a/b*x;
	return ret;
}
void solve(){
	int x,y,ans=ex_gcd(n,m,x,y);
	printf("%d %d %d\n",x,y,ans);
}
signed main(){
	int t=1;
	while(~scanf("%d%d",&n,&m))solve();
}

别问为什么和OI Wiki上的一样,但是我认为自己手打一遍还是记得住的。

标签:lfloor,right,gcd,int,笔记,学习,bx,扩欧,mod
From: https://www.cnblogs.com/yinhee/p/Extended_Euclidean_algorithm.html

相关文章

  • 2023.1.2~2023.1.18 学习总结
    这一段时间学的东西还是蛮多的,所以稍微总结一下左偏树左偏树是堆的一种,具有堆的性质,同时支持快速合并,所以也被称为可并堆。先来看一些定义:我们把一个左子树或右子树为......
  • SpringBoot源码学习3——SpringBoot启动流程
    系列文章目录和关于我一丶前言在《SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的》中我们学习了SpringBoot自动装配如何实现的,在《Sprin......
  • JavaScript学习笔记—instanceof和hasOwn
    1.instanceof用来检查一个对象是否是一个类的实例检查的是对象的原型链上是否有该类实例(只要原型链上有该类实例,就会返回true)Object是所有对象的原型,所以任何对象和Ob......
  • 学习笔记——Tomcat中的结点(Server、Service、Connector、Container、Engine、Host、C
    2023-01-18一、Tomcat中的结点1、Server(服务器)Server代表整个Tomcat服务器,一个tomcat只有一个ServerServer中包含至少一个Service组件,用于提供具体服务。2、ServiceS......
  • LINUX学习之文件基本属性(二)
    查看文件属性Linux系统是一种典型的多用户系统,不同的用户处于不同的地位并拥有不同的权限。在Linux系统中,通常使用chown命令来修改文件或目录的所有者,chmod命令则用......
  • JavaScript学习笔记—原型对象
    1.访问一个对象的原型对象(1)对象.__proto__(2)Object.getPrototypeOf(对象)一般用第二种,第一种不安全2.原型对象中的数据(1)对象中的数据(属性、方法等)(2)constructor(对象......
  • 学习笔记——Spring声明式事务管理;Spring中支持事务管理;使用声明式事务管理;Spring声明
    2023-01-18一、Spring声明式事务管理1、事务四大特征(ACID)(1)原子性(2)一致性(3)隔离性(4)持久性2、事务三种行为(1)开启事务:connection.setAutoCommit(False)(2)提交事务:conne......
  • 「学习笔记」后缀自动机与广义后缀自动机
    本文仅为方便理解,没有具体证明过程,推荐理解主要原理后去阅读详细证明过程。后缀自动机是一个处理字符串子串相关问题的优秀的算法。引入首先来考虑这样一个问题:如何存......
  • 「学习笔记」后缀数组
    后缀数组,即\(sa\)数组,代表的是一个字符串所有后缀按照字典序排序后,排名第\(i\)的后缀的开头位置。举个例子:aabaaab的所有后缀有:编号前缀1aabaaab2......
  • 「学习笔记」莫比乌斯反演套路总结
    基本套路Crash的数字表格/JZPTAB求:\[\sum_{i=1}^n\sum_{j=1}^m\mathrm{lcm}(i,j)\]\[\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^m\mathrm{lcm}(i,j)\\=&\sum_{i=......