简单模板:
//简单gcd,求a,b最大公约数
ll gcd(ll a,ll b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
//循环写法
ll gcd(ll a, ll b)
{
ll t;
while(b)
{
t = b;
b = a % b;
a = t;
}
return a;
}
//扩展欧几里得算法
//可求解ax+by=c方程组的一组解,前提是c%gcd(a,b)==0
void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y) //d为在最后算出来为gcd(a,b),可不需传值
{
if(b==0)
{
d=a;
x=1;
y=0;
}
else
{
ex_gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
//通解
//x=x0+(b/gcd(a,b))*t;
//y=y0-(a/gcd(a,b))*t; (其中t为任意整数)
还有个知识点: