1:求不定方程的解
2:求解模线性方程
3:求乘法逆元
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a, b, x, y, gcd, ans, p;
void exgcd(int a, int b, int &gcd, int &x, int &y)
{
if (b == 0){
x = 1;
y = 0;
gcd = a;
}
else{
exgcd(b, a % b, gcd, y, x);
y -= x * (a / b);
}
}//扩展欧几里得求不定方程的解x,y。
inline int cal(int a, int p){
exgcd(a, p, gcd, x, y);
if(1 % gcd != 0)return -1;
x = x * 1 / gcd;
p = abs(p);
ans = x % p;
if(ans <= 0)ans += p;
return ans;
}//求乘法逆元。
int main()
{
cin >> a >> b;
cal(a,b);
cout << cal(a,b);
return 0;
}