题意:找出最小的非负整数X,使之满足式子X*a + Y*b = 1。
思路:简单的扩展欧几里德。
#include<stdio.h>
int exgcd(int a,int b,int &x,int &y)
{
int i,j;
if(b==0)
{
x=1;
y=0;
return a;
}
i=exgcd(b,a%b,x,y);
j=x;
x=y;
y=j-a/b*y;
return i;
}
int main()
{
int a,b,x,y,r;
while(scanf("%d %d",&a,&b)!=EOF)
{
r=exgcd(a,b,x,y);
if(r==1)
{
while(x<0)
{
x+=b;
y-=a;
}
printf("%d %d\n",x,y);
}
else
printf("sorry\n");
}
return 0;
}