欧几里得
typedef __int64 LL;
LL gcd( LL a,LL b )
{
return b == 0?a:gcd(b,a%b);
}
//求整数x和y使得ax+by=d;且|x|+|y|最小。其中d=gcd(a,b);
typedef __int64 LL;
void gcd( LL a,LL b,LL &d,LL &x,LL &y )
{
if( !b ){
d = a; x = 1; y = 0;
}
else{
gcd( b,a%b,d,y,x );
y -= x*(a/b);
}
}