扩展欧几里得不定方程

对于ax+by=c来说,如果c%gcd(a,b)==0,则此不定方程有解。

特别的,当c==1时,方程为欧几里得不定方程,当且仅当gcd(a,b)==1时,有解。

#include<cstdio>
int extgcd(int a,int b,int &x ,int &y)
{
	int d=a;
	if(!b)
	{
		x=1,y=0;
		return d;
	}
	d=extgcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}
int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	int x,y;
	int t=extgcd(a,b,x,y);
	if(c%t)//有解的条件
	printf("无解\n" );
	else
	printf("x = %d,y = %d\n",x*c/t,y*c/t);//最小正整数解
	return 0;
}