Description
求同余方程 \(ax \equiv 1 (\bmod\ b)\) 的最小正整数解。
Solution
转化为求解方程 \(ax+by \equiv 1 (\bmod \ b)\) 的 \(x\) 的最小正整数解。
我们可以先暴力用 exgcd 解出 \(x\),然后令 \(x=(x+b) \bmod \ b\) 即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
int a,b;
inline void exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1,y=0;
return;
}
exgcd(b,a%b,x,y);
int t=x;
x=y,y=t-(a/b)*y;
}
signed main()
{
ios::sync_with_stdio(false);
cin>>a>>b;
int x,y;
exgcd(a,b,x,y);
x=(x+b)%b;
cout<<x<<endl;
system("pause");
}