模版—扩展欧几里德

int exGcd(int a, int b, int &x0, int &y0)
{
    if(b==0)
    {
      x0 = 1;
      y0 = 0;
      return a;
    }
    int r = exGcd(b, a % b, x0, y0);
    int t = x0;
	x0 = y0;
	y0 = t - a / b * y0;
	return r;
}
 
/*求方程ax+by=c的整数解
函数返回a b的最大公约数(记作gcd(a,b)) ,并顺带出ax+by=gcd(a,b)的一组解  x0 y0
如果c%gcd(a,b)!=0则无整数解
否则通解为(t为任意整数):
x = x0*c/gcd(a,b) + b/gcd(a, b) * t
y = y0*c/gcd(a,b) - a/gcd(a, b) * t 
*/
原文地址:https://www.cnblogs.com/arbitrary/p/2603311.html