1. 程式人生 > >『NOIP 2012』同余方程 (exgcd)

『NOIP 2012』同余方程 (exgcd)

鏈接 https using noip int gcd += long long a*

題目鏈接

題目描述

求關於xx的同余方程 \(a x \equiv 1 \pmod {b}\) 的最小正整數解。



解題思路

\(exgcd\)模板題。

簡單證明一下:

明天再證qwq



代碼

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
long long a,b,x,y,gcd;
inline void ex_gcd(long long a,long long b,long long &x,long long &y){
    if(b==0){
        gcd=a;
        x=1,y=0;
        return;
    }
    ex_gcd(b,a%b,x,y);
    long long t=x;
    x=y;
    y=t-(a/b)*y;
}
int main(){
    scanf("%lld%lld",&a,&b);
    long long x,y;
    ex_gcd(a,b,x,y);
    long long lcm=(long long)a*(long long)b/(long long)gcd;
    lcm/=a;
    //cout<<lcm<<' '<<x<<endl;
    while(x<=0){
        x+=lcm;
    }
    cout<<x<<endl;
}

『NOIP 2012』同余方程 (exgcd)