用于求解ax+by=gcd(a,b),有一系列其他应用。
时间复杂度:O(
log2n
)
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
LL a,b,ans1,ans2,_gcd;
void exgcd(LL a,LL b,LL &x,LL &y){
if(!b){ x=1; y=0; return; }
gcd(b,a%b,y,x); y-=x*(a/b); // x <= y' y <= x'-(a/b)y'
}
int main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
scanf("%lld%lld",&a,&b);
exgcd(a,b,ans1,ans2);
printf("%lld %lld\n",ans1,ans2);
return 0;
}