这是一道裸的欧几里得,首先得知道欧几里得的套路:
int exGcd(int a, int b, int &x, int &y)
{
if(b == 0)
{
x = 1;
y = 0;
return a;
}
int r = exGcd(b, a % b, x, y);
int t = x;
x = y;
y = t - a / b * y;
return r;
}
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int x,y;
int exgcd(int a,int b)
{
if(b==0)
{
x=1;
y=0;
return a;
}
int r=exgcd(b,a%b);
int t=x;
x=y;
y=t-a/b*y;
return r;
}
int main()
{
int a,b,d;
while(scanf("%d%d",&a,&b)!=EOF)
{
d=exgcd(a,b);
if(d!=1)
{
printf("sorry\n");
continue;
}
while(x<0)
{
x+=b;
y-=a;
}
printf("%d %d\n",x,y);
}
return 0;
}