package demo2;
public class P96 {
//对任意整数a、b和它们的gcd
//当且仅当m为gcd的整数倍时,ax+by=m(贝祖公式)有整数解
//要求给出其中一组解
//原理:不妨先算ax+by=gcd,用辗转相除法求a、b的gcd,
//则化到最后a2=gcd,b2=0,相应的,x2=1,y2不妨取0
//根据辗转相除法公式,有逆推上一步x、y的公式
//上一层x1=y2 , y1=x2-(a/b * y2)
static long x;
static long y;
public static void main(String[] args) {
linearEquation(2, 7, 1);
System.out.println(x+" , "+y);
}
static long gcdForXy(long a,long b) {
//全局变量改x,y,返回gcd
if(b==0) {
x=1;
y=0;
return a;
}
long gcd=gcdForXy(b, a%b);
long x2=x;
x=y;
y=x2-a/b*y;
return gcd;
}
static void linearEquation(long a,long b,long m) {
long gcd=gcdForXy(a, b);
long k=m/gcd;
x=x*k;
y=y*k;
}
}