扩展欧几里得算法求一次同余方程的解(一个最小解的情况)
long long X,Y;
void Gcd(long long A,long long B,long long &gcd)
{
if(B){Gcd(B,A%B,gcd);long long t=X;X=Y;Y=t-(A/B)*Y;}
else {gcd=A;X=1,Y=0;}
}
void GCD(long long A, long long B, long long C)//A*x=B Mod (C)
{
long long gcd;
Gcd(A,C,gcd);
if(B%gcd) printf("Impossible\n");//无解的情况
else
{
X*=B/gcd;
Y*=B/gcd;
if(X>0)X%=C;
else X=X%C+C;
printf("%lld\n",X);//第一个最小的解
}
}