求ax≡1(mod b)的最小正整数,很显然可以转化成 ax+by=1,x的最小正整数解。
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll exgcd(ll a,ll b,ll& x,ll& y){ if(b==0){ x=1;y=0; return a; } int t=exgcd(b,a%b,x,y); int temp=x; x=y;y=temp-(a/b)*y; return t; } int main(){ ll a,b,x,y; scanf("%lld%lld",&a,&b); exgcd(a,b,x,y); printf("%d",(x%b+b)%b); return 0; }