扩展的欧几里德。直接上模板。AC!
#include <stdio.h>
void ext_eclud(int a,int b,int *gcd,int *x,int *y){
if(b==0){
*gcd = a;
*x = 1;
*y = 0;
return ;
}
ext_eclud(b,a%b,gcd,x,y);
int temp = *y;
(*y) = (*x)-(a/b)*(*y);
(*x) = temp;
return ;
}
int main(int argc, char *argv[])
{
//FILE *fp;
//fp = freopen("in5.txt","r",stdin);
int a,b;
int gcd;
int x,y;
while(~scanf("%d%d",&a,&b)){
ext_eclud(a,b,&gcd,&x,&y);
if(gcd == 1){
int k = 0;
while(x > 0){
++k;
x -= k * b/gcd;
y += k * a/gcd;
}
k = 0;
while(x < 0){
++k;
x += k * b/gcd;
y -= k * a/gcd;
}
printf("%d %d\n",x,y);
}else{
printf("sorry\n");
}
}
return 0;
}