逆元(详细揭秘)
雑踏、僕らの街
やり残した鼓動がこの夜を覆って
僕らを包んで 粉々になる前に
頼りなくてもいい その手を
この手は自分自身のものさ
変わらないはずはないよ
手を伸ばして
雑踏の中で声無き声で泣いている
足跡が今 誰かの声を消した朝
いつになっても枯れることのない
腐敗した街の泥水が冷たい
何にも変わらない世界で
今日だって生きてゆくんだ
くだらないけど 仕方ないでしょ
僕らはもう 歩き始めたんだ
嘘みたいな 馬鹿みたいな
どうしようもない僕らの街
それでも
この眼で確かに見えたんだ
この手で確かに触れたんだ
ねえ ほら ほら
ほらまた吹いた 馬鹿みたいだ
どうしようもない闇を照らせ
夢じゃない
どうせ終わってる街だって
諦めたって変わんないぜ
ああ まだ まだ まだ
やり残した鼓動がこの夜を覆って
僕らを包んで 粉々になる前に
頼りなくてもいい その手を
この手は自分自身のものさ
変わらないはずはないよ
手を伸ばして
永遠の中で 迷わない為の温もり
軽薄な君に
届くことなく散ってゆく
想像通り? そんなはずはない
逃げりゃいいでしょ?
簡単に言わないで
いつも通りの世界を
今日だって駆けてゆくんだ
滑り落ちたら 掴んでやろう
灰色の空 その中で煌めく青さを
嘘みたいな 馬鹿みたいな
どうしようもない僕らの街
それでも
この眼で確かに見えたんだ
この手で確かに触れたんだ
ねえ ほら ほら
ほらまた吹いた 馬鹿みたいだ
どうしようもない闇を照らせ
夢じゃない
どうせ終わってる街だって
諦めたって変わんないぜ
ああ まだ まだ まだ
やり残した鼓動がこの夜を覆って
僕らを包んで 粉々になる前に
頼りなくてもいい その手を
この手は自分自身のものさ
変わらないはずはないよ
手を伸ばして
何もかも君次第で 僕次第さ
祝贺我第十分块成功卡过 ~(∠・ω< )⌒★
jjdw 的详解一点也不详细。
本质是基于 exgcd,但是写起来确实好写。
考虑求 \(x\) 满足 \(ax\equiv 1 \pmod b \Leftrightarrow ax + by = 1\)。
若我们已经求出了一个 \(y\) 满足 \(by \equiv 1 \pmod a\) 即 \(b\) 的逆,容易发现其依然满足 \(ax + by = 1\)。
解出 \(x\) 得 \(x = \frac{1 - by}a\) 然后就做完了。
但是实际上常用的形式是:
int inv(int a, int b){return a == 1 ? 1 : b - 1ll * inv(b % a, a) * b / a;
}
这里用了些简化计算的小技巧,也容易发现其是等价的。考虑到 \(a \mid 1 - bb^{-1}\),所以 \(a \nmid 1 - bb^{-1}\),则 \(\left \lceil \frac{- bb^{-1}}{a} \right \rceil\)(注意这里是向 \(0\) 取整)则就是 \(\frac{1 - by}a\),又由于 \(a = a, b^{-1}\in[1, a)\),所以 \(-\left \lceil \frac{- bb^{-1}}{a} \right \rceil < b\)。
复杂度 \(\log\) 是显的,和 \(\gcd\) 一样构造斐波那契的相邻两项即可卡满
至于第二个求逆就是模板线性求逆,JJdw 说复杂度是 Open 的,低于 \(\sqrt q\) 好像是有证明了。