ax + by = gcd(a,b).
x = x0 + k*(a/d).
y = y0 - k*(b/d).
因为: a = 1(mod b).所以d = 1.
x = x0 + k * b.
y = y0 - k * a.
所以 x = x0 + k * b.最小为(x0 % b + b) % b
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a,b;
int exgcd(int a, int b, int &x, int &y) // 扩展欧几里得算法, 求x, y,使得ax + by = gcd(a, b)
{
if (!b)
{
x = 1; y = 0;
return a;
}
int d = exgcd(b, a % b, y, x);
y -= (a / b) * x;
return d;
}
int main(){
cin >> a >> b;
int x, y;
exgcd(a, b, x, y);
cout << (x % b + b) % b << endl;
}