蒟蒻刚学会扩展欧几里得,想问一下能否用类似的方法解三元一次(甚至是n元一次)不定方程。
事实上,我已经能求出一组特解。
设d=gcd(a,b,c),对于不定方程
ax+by+cz=d
转换为
(bmoda)x+(cmodb)+az=d
求解。
当方程中有一个系数为0,将该系数对应的未知数设为0进行递归,剩下的系数不为0的两个未知数继续用二元一次不定方程的求解方式求解。
当然,若出现两个未知数的系数均为0,那么直接计算剩下的那个未知数的值并递归。
接着是方程
(bmoda)x0+(cmodb)y0+az0=d
的解向原方程的解的转换。
∵bmoda=b−⌊ab⌋a,cmodb=c−⌊bc⌋b
∴(b−⌊ab⌋a)x0+(c−⌊bc⌋b)y0+az0=d
拆括号后提取a,b,c,得
\begin{cases}
x=z_0-\lfloor \frac{b}{a} \rfloor x_0 \\
y=x_0-\lfloor \frac{c}{b} \rfloor y_0 \\
z_=y_0
\end{cases}$$
由此通过递归解出一组特解。
按照扩展欧几里得算法,接下来要求出原方程的最小解,~~漂亮,我就不会了~~。
求助dalao QWQ