首页 > 其他分享 >exgcd & 线性同余方程

exgcd & 线性同余方程

时间:2023-01-15 16:33:37浏览次数:46  
标签:gcd int 1x exgcd 线性 ax 同余

前置芝士

  • 裴蜀定理

exgcd

exgcd扩展欧几里得定理,常用来求解\(ax + by = gcd(a,b)\)的可行解问题

推导过程:

考虑我们有:

​ \(ax + by = gcd(a,b)\)——裴蜀定理

​ \(a_1x_1 + b_1y_1 = gcd(a_1,b_1)\)

当我们从\(1\)到\(2\)时,即\(gcd(a_1,b_1)\rightarrow gcd(a_2,b_2) = gcd(b_1,b_1\%a_1)\)

​ \(a_2x_2+ b_2y_2 = gcd(a2,b2)\Rightarrow b_1x_2 + (b_1\%a_1) y_2 = gcd(b_1,b_1\%a_1)\)

直到\(gcd(a_n,b_n)\ \ b_n = 0\)

​ \(a_nx_n+b_ny_n = gcd(a_n,b_n)\Rightarrow a_nx_n + 0 * y_n = gcd(a_n,0) = a_n\)

此时我们看出,\(x_n = 1,y_n = 0\)(\(y_n\)其实可以取任意一个数)时是一组特殊解

现在我们考虑怎么从\(n\rightarrow1\)推出我们需要的一组\(x,y\)

​ 从上面给出的例子,我们可以推出:

​ \(\because gcd(a,b) = gcd(b,a\%b)\)

​ \(\therefore a_1x_1 + b_1y_1 = b_1x_2 + (b_1-\lfloor\frac{b_1}{a_1}\rfloor\times a_1)y_2 = a_1y_2 + b_1(x_2-\lfloor\frac{a}{b}\rfloor y_2)\)

​ 然后我们可以推出:

​ \(\begin{cases}x_i = y_{i+1} \\ y_i = x_{i+1}+\lfloor\frac{a_i}{b_i}\rfloor y_{i+1}\end{cases}\)

solved!

下面附代码:

int exgcd(int a,int b,int &x,int &y){
	if(!b){x = 1;y = 0;return a;}
	int d = edgcd(b,a%b,x,y);
	int t = x;
	x = y;
	y = t - (a/b) * y;
	return d;
}

同余方程

​ 形如\(ax\equiv b(mod\ n)\)的方程称为同余方程,其中\(a,b,n\)给出,求出\(x\)

​ 我们按上面的方程可以化出这个式子\(ax+nk = b\)

​ 用\(exgcd\)求解即可

标签:gcd,int,1x,exgcd,线性,ax,同余
From: https://www.cnblogs.com/rickylin/p/17053687.html

相关文章

  • 动态规划笔记(三):其它的常见线性问题(未整理完)
    最长公共子序列(HDU-1159)注意子序列和子串的区别用\(dp[i][j]\)表示序列\(X\)前\(i\)项和序列\(Y\)的前\(j\)项的最长子序列的长度当\(x[i]=x[j]\)时,\(dp[i][j]=dp[i......
  • 位运算与线性基
    运算律与或异或分别满足交换律和结合律,但有两种同时出现时好像就都不满足了。异或异或的逆运算是它本身(参看各种解怪题选择性报告中树上异或路径)。从这一性质出......
  • 同余进阶
    扩展欧拉定理\[a^b\equiv\begin{cases}a^{b\bmod\varphi(m)}&(a,m)=1\\a^b&(a,m)\neq1,b<\varphi(m)\\a^{b\bmod\varphi(m)+\varphi(m)}&(a,m)\neq1,\,b\g......
  • 同余最短路学习笔记
    同余最短路通常可以解决形如给出若干整数,用它们拼出大整数而产生的问题。其工作原理是选择一个模数\(m\),将整数分成\(m\)个同余类,将每个同余类看做一个状态。那么拼\(......
  • DP7361 是一款立体声六通道线性输出的数模转换器-兼容CS4361
    DP7361是一款立体声六通道线性输出的数模转换器,内含插值滤波器、Multi-Bit数模转换器、模拟输出滤波器,支持主流的音频数据格式。DP7361片上集成线性低通模拟滤波器和四......
  • 线性基&线性空间 学习笔记
    Part1基础概念向量:一行的矩阵或一行的矩阵线性空间:由一组向量通过线性组合(相加和乘系数)能够表示的向量的集合。线性相关\(and\)线性无关:若一组向量中存在一个向量能......
  • 数组描述线性表(C++实现)
    线性表也称有序表,其每一个实例都是元素的一个有序集合抽象类linearList一个抽象类包含没有实现代码的成员函数,这样的成员函数称为纯虚函数,用数字0作为初始值来说明templ......
  • 整除与同余基础
    欧几里得算法鉴于后面有很多和\(\gcd\)相关的东西,拿这个起手,顺便规定\((a,0)=(0,a)=a\)。在群论意义下,对于\(\gcd\)操作,\(1\)是零元,我们这么规定是让\(0\)做......
  • 7-线性回归
    title:7-线性回归date:2021-01-1810:58:30permalink:/pages/491782/......
  • 第二章 线性表(上)
    一、线性表的定义及具体操作1.定义线性表(LinearList)是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表......