首页 > 其他分享 >exgcd 通解(新)

exgcd 通解(新)

时间:2024-06-02 15:44:09浏览次数:13  
标签:frac gcd exgcd times ax 通解 div aligned

可能不全,老文章在这
什么是通解,我们知道二元一次方程,是如果只有一个式子,那么解会有无数个,而通解就是指让我们只找到一个解就可以推出其他所有解的式子。
注意以下变量都为整数

知道了定义下面就是推式子了,首先设 \(x, y\) 是 \(ax + by = \gcd(a, b)\) 的一个解,那么有

\[y = \left[\gcd(a, b) - ax \right] \div b \tag 1 \]

再设一个解 \(x_0,y_0\)

\[x_0 = x + k \tag 2 \]

那么有

\[ax_0 + by_0 = \gcd(a, b) \]

所以

\[y_0 = [\gcd(a, b) - ax_0] \div b \tag{3} \]

由 \((3)\) 和 \((2)\) 得

\[y_0 = \left[\gcd(a, b) - ax - ak \right] \div b = [\gcd(a, b) - ax] \div b - \frac{a}{b} \times k \tag4 \]

由 \((4)\) 和 \((1)\) 得

\[y_0 = y - \frac{a}{b} \times k \tag 5 \]

我们要保证 \(y_0\) 是整数,且 \(y\) 又是整数, 那么 \(\frac{a}{b} \times k\) 就是整数,设 \(d = \gcd(a, b)\)
\(a = a' \times d, b = b' \times d\),这里 \(a', b'\) 互质(如果他们不互质,\(d\) 就可以通过 \(a', b'\) 的公约数变大, 这就和我们d是最大公约数就矛盾了, 所以a'和b'互质)
此时有

\[\frac{a}{b} \times k = \frac{a'} {b'} \times k \]

因为 \(a'\) 和 \(b'\) 互质,那么 \(\frac{a'}{b'} \times k\) 要是想是整数的话,\(k\) 只能是 \(b'\) 的倍数(\(k =0\) 时整个就是
\(0\) 也是整数,,依旧满足要求)不然就消不掉 \(\frac{a'}{b'}\)的分母 \(b'\) ,就会产生小数, 就不是整数了,因此

\[k = n \times b', n \in \mathbb{Z} \]

又因为

\[b' * d = b \]

所以

\[b' = b \div d \]

所以

\[k = \frac{nb}{d} \]

所以

\[x_0 = x + n*b/d \tag6 \]

通过 \((5)\) 和 \((6)\) 可得

\[y_0 = y - \frac {na}{d} \tag7 \]

至此通解就出来了

\[\begin{aligned} x_0 &= x + \frac{b}{d} \times n \\ y_0 &= y - \frac{a}{d} \times n \end{aligned} \]

更常见的是这样的

\[\begin{aligned} x_0 &= x + k\times \frac{b}{d},k\in \mathbb{Z} \\ y_0 &= y - k \times \frac{a}{d} \end{aligned} \]

附带最小正整数解就是

\[\begin{aligned} x & \bmod \frac{b}{d}\\ y & \bmod \frac{a}{d} \end{aligned} \]

对于代码中,因为 C++ 强大的取负模的特性,所以更准确代码形式的应该是

(x % (b/d) + b/d) % (b/d)

就相当于把所有的 \(\frac{kb}{d}\) 给删掉, 剩下的就是最小的正整数解。

标签:frac,gcd,exgcd,times,ax,通解,div,aligned
From: https://www.cnblogs.com/blind5883/p/18227200

相关文章

  • [题解]P5656 【模板】二元一次不定方程 (exgcd)
    P5656【模板】二元一次不定方程(exgcd)若存在\(ax+by=c\),则可以根据特解\(x,y\)求出任意通解\(x',y'\):\(\begin{cases}x'=x+k*\frac{b}{\gcd(a,b)}\\y'=y-k*\frac{a}{\gcd(a,b)}\end{cases}(k\in\mathbb{Z})\)求特解的方法是「扩展欧几里得(exgcd)」,如果没接触过可以先阅读......
  • 扩展欧几里得(exgcd)通解及其证明
    exgcd求ax+by=gcd(a,b)中x和y的通解(下面简称通解)什么是通解我们知道二元一次方程,是如果只有一个式子,那么解会有无数个而通解就是指让我们只找到一个解就可以推出其他所有解的式子(注意本证明极其复杂,请直接背模版或感性理解)知道了定义下面就是推式子了首先......
  • P5656 【模版】二元一次不定方程(exgcd)
    综合考查exgcd功力的题目。没有整数解当且仅当\(\gcd(a,b)\nmidc\),直接输出-1。用exgcd解方程\(ax+by=\gcd(a,b)\)得到一组特解\(x_0,y_0\)。对原方程变形得到\(a\cdot\dfrac{xc}{\gcd(a,b)}+b\cdot\dfrac{yc}{\gcd(a,b)}=c\),于是有\(ax+by=c\)的一组特解\(x_1=\d......
  • gcd & exgcd
    gcd&exgcdgcd设\(a=bk+c\),显然有\(c=a\bmodb\)。设\(d\mida,~d\midb\),则\(c=a-bk,\frac{c}{d}=\frac{a}{d}-\frac{b}{d}k\)。由右边的式子可知\(\frac{c}{d}\)为整数,即\(d\midc\),所以对于\(a,b\)的公约数,它也会是\(b,a\bmodb\)的公约数。反过来也需要证......
  • exgcd+乘法逆元相关笔记
    #include<iostream>#include<cstdio>usingnamespacestd;constintpass=0;//exgcd://求解二元一次不定方程//ax+by=(a,b)=(b,a%b)=bx'+(a%b)*y'=bx'+(a-b*(a/b))*y'=b*(x'-(a/b)*y')+ay'//则有y=(x'-(a/b)*y'),x=y'......
  • exgcd 学习笔记
    定义又名扩展欧几里得算法(辗转相除法)是用来求\(ax+by=gcd(a,b)\)中未知数的算法算法证明拿到一组\(a,b\),设\(G=gcd(a,b)\)目标:求出满足\(ax+by=G(1)\)的\(x\)与\(y\)如果已知一组\(x2,y2\),满足\(bx2+\)\((a\)\(mod\)\(b)y2=G(2)\)此时结合\((1)(2)\)得\(a......
  • 一些高中解析几何的通解
    最近学解析几何,发现很多题可以直接套通解,于是把通解求了个遍。点和点求\(P_1(x_1,y_1)\)、\(P_2(x_2,y_2)\)所在的直线\(\left(y_{2}-y_{1}\right)x+\left(x_{1}-x_{2}\right)y+x_{2}y_{1}-x_{1}y_{2}=0\)https://www.desmos.com/calculator/tzjl5dpoi1求\(P_1(x_1......
  • 智慧交通解决方案:钡铼技术ARM工控机
    在交通运输领域,钡铼技术ARM工控机可以实现以下功能: 实时监控和管理:利用钡铼技术ARM工控机,可以对交通运输中的车辆、船只、飞机等进行实时监测和管理,帮助调度员提高车辆调度和路线规划的准确性和效率。安全保障:利用钡铼技术ARM工控机,可以建立健全的交通安全预警系统,及时响应各......
  • 山海鲸智慧交通解决方案demo——构建未来城市出行的数字蓝图
    随着城市化进程的不断加速,城市交通问题也变得日益严重。为了改善城市交通体验、提高出行效率以及减少交通拥堵和环境污染。山海鲸可视化打造城市智慧交通系列解决方案模板,解决方案以“数字孪生技术”为核心,通过数据分析、人工智能和物联网技术来优化城市出行,下面带大家详细了解一......
  • GYM104090A Modulo Ruins the Legend - exgcd -
    题目链接:https://codeforces.com/gym/104090/problem/A题解:转化一下发现只需要求满足下式的解:\[ns+\dfrac{n\times(n+1)}{2}d\equivC(\bmodm)\]设\(a=n,b=\dfrac{n(n+1)}{2},p=gcd(a,b)\)即找到一组\((s',d',t')\)使得\(as'+bd'+mt'=C\)考虑\(a......