模版—扩展欧几里德
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 */