求ax+by=c的通解
使用扩展欧几里得能得到该方程的一个解,即我们由裴蜀定理能求出ax+by=gcd(a,b)的一个解,那么我们改变下方程,令g=gcd(a,b),对ax*c/g+by*c/g=c,我们也能求出一个解,同时,不难发现,对于该公式,(ac/g)*(x+kb/g)+(bc/g)*(y-ka/g)=c与之等价,所以对于其通解,可以表示为
x=x0+k*b/g,y=y0-k*a/g
我们求出一个解后对x进行(x%(b/g)+b/g)%(b/g)就能得到最小整数解了
证明
- ax+by=c
- ax0+by0=c
- a(x-x0)+b(y-y0)=0
- (a/g)(x-x0)=(b/g)(y0-y)
- 因为a/g与b/g互素
- 所以x-x0=t*b/g , x=x0+t*b/g , y0-y=t*a/g , y=y0-t*a/g