luoguP1082 同余方程

求ax1(mod b)的最小正整数,很显然可以转化成 ax+by=1,x的最小正整数解。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll& x,ll& y){
    if(b==0){
        x=1;y=0;
        return a;
    }
    int t=exgcd(b,a%b,x,y);
    int temp=x;
    x=y;y=temp-(a/b)*y;
    return t;
}
int main(){
    ll a,b,x,y;
    scanf("%lld%lld",&a,&b);
    exgcd(a,b,x,y);
    printf("%d",(x%b+b)%b);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Dream-Runner/p/9446049.html
今日推荐