【Noip2012】同余方程

【Noip2012】同余方程


描述:

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


输入:

输入只有一行,包含两个正整数a, b,用一个空格隔开。


输出:

输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。


题解:

不定方程-扩展欧几里得,直接套模板上。

#include
#include
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;
} 

你可能感兴趣的:(Noip,Vijos)