解线性同余方程板子

求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。

那么变形就是ax+kb=1ax+kb=1

那么也就是相当于求这个方程的最小正整数解

直接套上exgcd解出xx然后调整到最小正整数就是了

#include<bits/stdc++.h>
using namespace std;
inline int read(){
    char ch=getchar();
    int res=0;
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
    return res;
}
#define ll  long long
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(b==0){
        x=1,y=0;return a;
    }
    ll d=exgcd(b,a%b,x,y);
    ll z=x;x=y,y=z-y*(a/b);
    return d;
}
ll a,b,x,y;
int main(){
    cin>>a>>b;
    ll d=exgcd(a,b,x,y);
    cout<<(x%(b/d)+(b/d))%(b/d)<<'
';
}
原文地址:https://www.cnblogs.com/stargazer-cyk/p/10366447.html