解题思路:这个问题我本来是用公式将y求出来然后看它是不是整数,虽然答案对了,但是提交总是超时。所以看了书上的扩展欧几里德算法之后才有了一点眉目。
程序代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
long long gcd(long long a,long long b,long long &x,long long &y)
{
if(b==0) {
x=1;y=0;
return a;
}
else{
long long d=gcd(b,a%b,x,y);
long long temp=x;
x=y;
y=temp-a/b*y;
return d;
}
}
int main()
{
long long x,y,a,b;
while(cin>>a>>b)
{
long long ans=gcd(a,b,x,y);
if(1%ans)
printf("sorry
");
else{
while(x<0)
x+=b,y-=a;
printf("%d %d
",x,y);
}
}
return 0;
}