其他分享
首页 > 其他分享> > 快速幂求逆元

快速幂求逆元

作者:互联网

给定 n 组 ai,pi,其中 pi 是质数,求 ai 模 pi 的乘法逆元,若逆元不存在则输出 impossible。

注意:请返回在 0∼p−1 之间的逆元。

乘法逆元的定义
若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得 a/b≡a×x(modm),则称 x 为 b 的模 m 乘法逆元,记为 b−1(modm)。
b 存在乘法逆元的充要条件是 b 与模数 m 互质。当模数 m 为质数时,bm−2 即为 b 的乘法逆元。

输入格式
第一行包含整数 n。

接下来 n 行,每行包含一个数组 ai,pi,数据保证 pi 是质数。

输出格式
输出共 n 行,每组数据输出一个结果,每个结果占一行。

若 ai 模 pi 的乘法逆元存在,则输出一个整数,表示逆元,否则输出 impossible。

。。。

a有逆元的充要条件是a与b互质。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
ll ans(ll a,ll b,ll mod)
{
	ll res = 1;
	while(b)
	{
		if(b & 1) res *= a,res %= mod;
		b /= 2;
		a *= a%mod;
		a %= mod;
	}
	return res;
}
int main()
{
	ll n;
	scanf("%lld",&n);
	while(n--)
	{
		ll a,b;
		scanf("%lld%lld",&a,&b);
		if(__gcd(a,b) == 1)
		{
			printf("%lld\n",ans(a,b-2,b)%b);
		} 
		else
		{
			printf("impossible\n");
		}
	}
}

标签:幂求,ai,res,ll,逆元,pi,快速,乘法
来源: https://blog.csdn.net/p15008340649/article/details/114984287