题意
求a关于m的乘法逆元
分析
a x ≡ 1 (mod m) 等价于 ax+my=1
求x的最小正数(不能是0,我就WA在这里了)。
gcd(a,m)!=1 时x不存在。
所以用扩展gcd就可以求了。
代码
#include<cstdio> #define ll long long ll exgcd(ll a,ll b,ll &x,ll &y) { if(b==0) { x=1; y=0; return a; } ll r=exgcd(b,a%b,y,x); y-=a/b*x; return r; } int main() { ll t,a,m,x,y; scanf("%lld",&t); while(t--) { scanf("%lld%lld",&a,&m); int ok=exgcd(a,m,x,y); if(ok==1) { x=(x%m+m)%m; if(x==0)x=m; printf("%lld ",x); } else { printf("Not Exist "); } } return 0; }