【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;
}