扩展欧几里得不定方程
对于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;
}