同余和逆.

同余

定义

a % m = b % m,记为a = b(mod m),称a和b模m同余,m为a,b的模

一元线性同余方程

定义

已知a,b,m.求未知整数x

ax = b(mod m)

由同余定义得ax - b是m的y倍(y为未知整数)

得ax + my = b(也就是二元线性丢番图方程),可以直接用解二元线性丢番图方程的方法解,也可以用逆的方法(下文逆应用写了)

定理

如果gcd(a,m) % b != 0方程无解

反之有gcd(a,m)个模m不同余的解(就是在模m的意义下有这么多个解)

比如a和m互素,就只有一个解

***!!!重要!!!***我才搞清楚原来要注意模m的意义下,比如a = 1, m = 13,如果没有模m的意义下x可以取1,14,…反之只有1

我们就可以得到一个推论如果 p 是质数那么在模p意义下的所有1到p-1的数的乘法逆元都是唯一的。

如果p不是质数,只是有可能没有解,但还是可以的

定义

给定整数a,满足gcd(a,m) = 1,称ax = 1(mod m)的一个解为a模m的逆,写做a-1(这里a * a-1等于1哦)

比如8x = 1(mod31)解可以是2,4等(这里是没有模31的意义下的前提)

求解方法

拓展gcd

ax = 1(mod m)转换成ax + my = 1

这里a,m是互素的,ax + my = gcd(a, m)即(1)

拓展gcd得到特殊解x0,通解就是x0+ m*n

ll exgcd(ll a, ll b, ll& x, ll& y){
	if(b == 0){
		x = 1;
		y = 0;
		return a;
	}
	ll d = exgcd(b, a % b, y, x);
	y -= a/b * x;
	return d;
}

得到的x是一个特解,取到最小正整数就可以了,在模m的范围里

费马小定理

n为素数,a为正整数并且和n互素,则有an-1 = 1(mod n)

得出a * an-2 = 1(mod n)

an-2(mod n)就是a模n的逆

递推求多个逆

设p = k*i + r (r是余数)

p = k*i + r用常见的同余方程字母就是m = ax + m%a

在模p的意义下,转换成

k ∗ i + r = 0 ( m o d   p ) k * i + r = 0(mod\ p) ki+r=0(mod p)

乘上i-1, r -1得到

k ∗ r − 1 + i − 1 = 0 ( m o d   p ) k*r ^{-1}+i^{-1} = 0(mod\ p) kr1+i1=0(mod p)

移位得

i − 1 = − k ∗ r − 1 ( m o d   p ) i^{-1} = -k * r ^{-1} (mod\ p) i1=kr1(mod p)

i − 1 = − ⌊ p i ⌋ ∗ ( p   m o d   i ) − 1 ( m o d   p ) , i^{-1} = - \lfloor \frac{p}{i} \rfloor * (p\ mod\ i) ^{-1} (mod\ p), i1=ip(p mod i)1(mod p),

得到了i与当前逆元的关系

注意我们还需要保证i-1 > 0,故加上p来取正

inv[1] = 1;
for(int i = 2; i < p; i++){
	inv[i] = (p - p/i) * inv[p % i] % p;
}

应用

求解同余方程

对于ax = b(mod m),我们求出了a-1,两边同乘a-1

得到x = a-1b(mod m)

除法取模

对于a/b(mod p),我们可以先求出b-1,然后*a,再mod p就是解了

a * a-1是可以消成1的在模的意义下

同余方程组

定义

形如

x = a1(mod m1)

x = a2(mod m2)

x = ar(mod mr)

求解方法

中国剩余定理(CRT,孙子定理)

使用前提:m1,m2,m3…mr互素

公式:x = (a1M1M1-1 + a1M1M1-1 + … + a1M1M1-1)(mod M)

M = m1m2m3…mr

Mi = M/mi

Mi1为Mi模mi的逆元

拓展CRT

https://www.luogu.com.cn/problem/P4777

核心思路是不断合并两个同余式,直到只剩一个

x = a(mod m)可以转换成x = a + km的形式

计算步骤

1:合并等式

x = a1 + Xm1(式1)

x = a2 + Ym2(式2)

得a1 + Xm1 = a2 + Ym2

移项Xm1 - Ym2 = a2 - a1

2:求解

Xm1 - Ym2 = a2 - a1即二元线性丢番图方程,exgcd可以得到特解X0

通解X = X0 + m2/gcd(m1,m2) * n

代入式1

3:新式

x = a1 + m1 X0 + m1m2/gcd(m1,m2) * n

由式1:x0 = a1 + m1 X0

得x = x0 + m1m2/gcd(m1,m2) * n

新方程x = a + Xm

a = x’

m = m1m2/gcd(m1,m2)

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值