给定a,b,求出关于方程ax ≡ 1 (mod b) 的最小x
输入保证了一定有解
2 ≤ a,b ≤ 2*109
# 题解
ax ≡ 1 (mod b)
ax+by=1
通解的表示:
x = x0 + b * k
y = y0 - a * k
所以x0 % b就是x能取到的最小值
最后要取正余数常用技巧:模以后加上模的数再模一次
1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4 ll a,b;
5 ll exgcd(ll a,ll b,ll &x,ll &y){
6 if(b==0){
7 x=1;y=0;
8 return a;
9 }
10 ll d =exgcd(b,a%b,y,x);
11 y-=a/b*x;
12 }
13 int main(){
14 cin>>a>>b;
15 ll x,y;
16 exgcd(a,b,x,y);
17 cout<<(x%b+b)%b<<endl;
18 }
来源:https://www.cnblogs.com/hhyx/p/12640304.html