2022/03/23 做题记录

exBSGS

axb(mod p)a^x \equiv b (mod\ p)

答案小于 pp 并不依赖 pp 是质数,问题在于 gcd(a,p)1gcd(a,p) \not = 1aa 可能不存在逆元。

于是设 d=gcd(a,p)d = gcd(a,p)

d∤bd \not \mid bb1b \not = 1时,答案不存在,因为 aa 任何大于 0 的次幂模 pp 后一定是 dd 的倍数。

原式子可化为 ax1bd(ad)1(mod pd)a^{x-1} \equiv \frac{b}{d} \cdot (\frac{a}{d})^{-1} (mod\ \frac{p}{d})

由于 ad\frac{a}{d},pd\frac{p}{d} 互质,逆元一定存在。

这样每次答案都会 -1 ,而答案 = 1 的时候 a=ba=b,易于判断,所以这样找到的一定是最小解。

因为每次 p 至少除 2,所以总时间复杂度可以认为和 BSGS 相同。

还需要判一些边界:a,b,p=0/1a,b,p = 0/1 什么的。

code: /code/2022.3.23/P4195.cpp

hydro #4128. Matrix

矩阵的 BSGS,因为保证 A 可逆且答案在 p 以内所以可以直接做。

矩阵乘法要加完再一起取模否则会被卡常。

code: /code/2022.3.23/bz4128.cpp