【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题

时间:2021-07-12 15:35:46

模板,,,

#include<cstdio>
using namespace std;
void exgcd(long long a,long long b,long long &x,long long &y){
if (b==0) {x=1; y=0;}
else {exgcd(b,a%b,x,y); int t=y; y=x-a/b*y; x=t;}
}
int main(){
long long a,b,x,y;
scanf("%lld %lld\n",&a,&b);
exgcd(a,b,x,y);
printf("%lld\n",(x+b)%b);
return 0;
}

白书上的更简短的模板:

void gcd(LL a,LL b,LL &d,LL &x,LL &y){
if (!b){
d=a;
x=1;
y=0;
}else{
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}