题目大意
ax + by = 1给出a和b计算xy的一个特解,x必须是正的还必须是最小的。
如果无解输出sorry
思路
典型的拓展欧几里得模版题,a(x + b*k) + b(y - a*k) = 1
代码
#include<cstdio>
int extgcd(int a,int b,int &x,int &y)
{
if(b == 0) {
x = 1;
y = 0;
return a;
}
int ret = extgcd(b,a%b,x,y);
int t = x;
x = y;
y = t - a/b*y;
return ret;
}
int main() {
//freopen("input.txt", "r", stdin);
int a, b, x, y;
while(~scanf("%d%d", &a, &b)) {
int gcd = extgcd(a, b, x, y);
if (gcd != 1) {
printf("sorry\n");
}
else {
while(x < 0) {
x += b;
y -= a;
}
printf("%d %d\n",x , y);
}
}
return 0;
}