扩展欧几里得
贝祖等式
给定两个整数 a,b,必存在整数 x,y 使得 ax+by=c 且 gcd(a,b)∣c。
算法分析
因为
gcd(a,b)=gcd(b,a%b)
可得
bx′+(a−⌊a/b⌋∗b)y′=gcd(b,a%b)
继而
ay′+b(x′−⌊a/b⌋∗y′)=gcd(b,a%b)=gcd(a,b)
故而
x=y′,y=x′−⌊a/b⌋∗y′
时间复杂度分析
这题的时间复杂度和欧几里得算法一样。欧几里得算法时间复杂度 O(logb),总时间复杂度 O(nlogb)。
线性同余方程
给定 n 组数据 ai,bi,mi,对于每组数求出一个 xi,使其满足 ai∗xi≡bi(modm),如果无解则输出
impossible。
由
ai∗xi≡bi(modm)
可得 ∃y∈Z
ax=my+b⇒ax+my′=b
由之前的贝祖等式可知,只要 gcd(a,m)∣b,我们就可以利用扩展欧几里得算法求解线性同余方程。
最后更新于