【同余定理+逆元】知识点讲解

【同余的定义】:

【同余的主要性质】:

性质证明:

【逆元】

(1)定义:

【费马小引理求解逆元】:

代码实现:

long long quickpow(long long a,long long b){
	if(b<0)  return 0;
	long long ret=1;
	a%=mod;
	while(b){
		if(b & 1 ) ret = ( ret *a ) % mod
		b>>=1;
		a = (a * a)% mod;
	}
	return ret;
}
long long inv(long long a){
	return quickpow(a,mod-2);
}

【扩展欧几里得算法求逆元】:

(1)欧几里得算法基本介绍:

(2)扩展欧几里得算法的证明:

(3)求解逆元:

(4)代码实现:

int exgcd(int a,int b,int &x,int &y)
{
	if(b==0)
	{ //推理,终止条件1 
		x=1;
		y=0;
		return a;
	}
	int t=exgcd(b,a%b,x,y)
	  int t=x;
	  x=y;
	  y=t-(a/b)*y;
	  return r;  最大公约数 
}

下面再贴一种求解逆元的方法。

【递推法求解逆元】:

代码实现:

LL inv[maxn];
void Prepare_inv(int n,int M){
	int[1]=1;
	for(int i=2;i<=n;i++){
		inv[i]=(long long)(M-M/i)*inv[M%i]%M 
	}
}

ps:我们会好好的!

猜你喜欢

转载自blog.csdn.net/LOOKQAQ/article/details/81282342