题意:找出最小的非负整数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; }