标签:
求解线性方程,首先要判断线性方程有没有解
如果,说明方程有解
我们可以先用扩展欧几里得求解方程
因为
即
最后化简得到
所以,当求出最大公约数时,,我们让x=1,y=0,求出一组解,然后递归返回时,根据上面的递推,不断递推出解,从而最终求的
的解
从而的解也可以求的。
LL extendGcd(LL a, LL b, LL &x, LL &y) { if(b==0) { x = 1; y = 0; return a; } LL g = extendGcd(b,a%b,x,y); //不断递推出新方程的解 LL t = x; x = y; y = t - a / b * y; return g; }
但是这样只能够求出一组解(x2,y2),如果要求出另一组解怎么办呢?我们设另外一组解为(x1,y1)
可以a"与b"是互为质数的,所以(x1-x2)是b“的倍数(设为kb"),那么x1=x2+kb. 同理,(y2-y1)也是a"的倍数(设为ka"),那么y1=y2-ka
即另一个组解为(x2+kb",y2-ka")
标签:
原文地址:http://www.cnblogs.com/justPassBy/p/4423141.html