#include<cstdio>
using namespace std;
typedef long long ll;
ll extend_gcd(ll a, ll b, ll &x, ll &y){
if(!a&&!b) return -1;
if(b==0){
x=1; y=0; return a;
}
ll d=extend_gcd(b, a%b, y, x);
y-=(a/b)*x;
//printf("%lld %lld %lld %lld\n", a, b, x, y);
return d;
}
ll mod_reverse(ll a, ll mod){
ll x, y;
ll d=extend_gcd(a, mod, x, y);
if(d==1) return (x%mod+mod)%mod;
else return -1;
}
int main(){
int T;
scanf("%d", &T);
while(T--){
ll n, m;
scanf("%lld%lld", &n, &m);
if(m==1)
{
printf("1\n"); continue;
}
ll ans=mod_reverse(n, m);
if(ans==-1)
printf("Not Exist\n");
else
printf("%lld\n", ans);
}
return 0;
}
ZOJ - 3609 (逆元、扩展欧几里得板子)
猜你喜欢
转载自blog.csdn.net/du_lun/article/details/80040697
今日推荐
周排行