拓展欧几里得的板子题
题面描述:题目描述
求关于x的同余方程ax≡1(mod b) 的最小正整数解。
解:先求ax+by=1的一组解,显然exgcd可以求。再求最小解。
设x1,y1为ax+by的一组解,即ax1+by1=1。y1=(1-ax1)/b.显只有x累加b或者累减b即为最小解。
代码如下`
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b;
void exgcd(ll &x,ll &y,ll a,ll b){
if(b==0){
x=1,y=0;return;
}
exgcd(x,y,b,a%b);
ll t=x;
x=y;y=t-(a/b)*y;
}
int main(){
cin>>a>>b;
ll x,y;
exgcd(x,y,a,b);
printf("%lld",((x%b)+b)%b);
return 0;
}