12.3 解不定方程 ax+by=c!*
(1) 讨论是否有解:如果 c mod gcd(a,b)≠0,那么方程无解。
(2) 转化:方程可变为 a’x+b’y=c’,其中
在求解之前一定先转化,否则 x、y 可能是错误的。
(3) 求解:和 gcd 很像。
void exgcd(int a, int b, int c, int &x, int &y)
{
if (a == 0)
{
x = 0;
y = c / b;
}
else{
exgcd(b % a, a, c, x, y);
y = x;
x = (c - b * y) / a;
}
}
(4) 构造通解:假设 x0,y0 是一组解,那么通解为
12.4 同余问题*
(1) 同余式
求同余式 ax≡b (mod m)的解。
1. 有解的充要条件是:存在一个整数 n,使得 ax-mn=b。
2. 求解过程:只需把它转化为 ax-mn=b。于是,x 和 n 就可以用 exgcd 求出来了。
3. 若 gcd(a,m)=d, b%d&#