Ax+By=C问题
总结总结 Ax+By=C
Ax+By=C的解的讨论(仅A,B为常数)
讨论一下该不定方程的解与C的取值存在什么关联:
- 若A,B互质,则对任意的C,满足等式的x,y一定有解且有无穷多个。
若还要求x,y的解非负,那么满足Ax+By=C的无解的C的个数是有限的,C最大取
max{C|C导致无解}=AB-(A+B)。**注:也就是说当C大于max值,一定有解。 - 若A,B不互质,则对任意C,不能保证x,y一定有解;
这时当且仅当 C%GCD(A,B)==0 ,不定方程有解;
***注:不能保证有解即满足Ax+By=C的无解的C的个数为INF
例题奉上:
- ·【蓝桥】·买不到的数目
- ·【蓝桥】·包子凑数
Ax+By=C的解(A,B,C均为常数)
不定方程的解分两种情况:
- C%GCD(A,B)==0 方程有解,特别的GCD(A,B)=1,方程有唯一解。
- 反之无解。
第①种情况下,该方程的解同时可转换为模线性方程(同余方程)的解:
求解模线性方程(同余方程)ax=b(mod n)
- 设d = gcd(a, n), 假定对整数x’, y’, 有d = ax’ + ny’,
如果d | b, 则方程ax = b(mod n)有一个解的值为x0, 满足:
x0 = x’(b / d)(mod n)
于是求得x’的解就可得到x0的解即方程 ax-ny=b的解
而ax’+ny’=d的解又需要用到Extend_Eculid定理
有关Extend_Eculid的通解可参考我的:Extend_Eculid1
2
3
4
5
6
7
8
9
10
11
12
13
14ll Extend_Eculid(ll a, ll b, ll &x, ll &y)
{ //求解ax + by = Gcd(a,b) 函数的返回值为GCD(a,b)
if(!b)
{
x = 1; y = 0;
return a;
}
else
{
ll temp = Extend_Eculid(b, a%b, y, x);
y = y - a/b*x;
return temp;
}
}
输出一组特解
1 |
|
对于特别的 GCD(A,B)=1 有唯一解,其解即为a的逆
有关逆元可参考我的: https://www.weayer.top/2020/02/28/Inverse/
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!