【Noip2012】同餘方程

【Noip2012】同餘方程


描述:

求關於x的同餘方程ax ≡ 1 (mod b)的最小正整數解。


輸入:

輸入只有一行,包含兩個正整數a, b,用一個空格隔開。


輸出:

輸出只有一行,包含一個正整數x0,即最小正整數解。輸入數據保證一定有解。


題解:

不定方程-擴展歐幾里得,直接套模板上。

#include<iostream>
#include<cstdio>
using namespace std;
long long a;
long long b;
long long x;
long long y;
long long gcd(long long a,long long b,long long &x,long long &y){
    if(!b){
        x=1;
        y=0;
        return a;
    }
    long long c,d;
    d=gcd(b,a%b,x,y);
    c=x;
    x=y;
    y=c-y*(a/b);
    return d;
}
int main(){
    scanf("%lld%lld",&a,&b);
    long long ans=gcd(a,b,x,y);
    printf("%lld",(x%b+b)%b);
    return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章