实际上这个问题可以转化为求 ax+by=1的解
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
void ex_gcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;
y=0;
return;
}
else
{
ex_gcd(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
}
}
int main ()
{
int a,b;
int x,y;
while(scanf("%d%d",&a,&b)!=EOF)
{
ex_gcd(a,b,x,y);
if(gcd(a,b)!=1) printf("impossible\n");
else printf("%d %d\n",x,y);
}
return 0;
}