Skip to content

Commit

Permalink
update ExtGCD.md
Browse files Browse the repository at this point in the history
  • Loading branch information
tatyam-prime committed May 31, 2024
1 parent c7e4d8d commit 45ccdb1
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
4 changes: 4 additions & 0 deletions docs/math/ExtGCD.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ documentation_of: //src/math/ExtGCD.hpp
- `ll extgcd(ll a, ll b, ll& x, ll& y)`:$\text{gcd}(a, b)$ を返す.$(x, y)$ には,$ax + by = \text{gcd}(a, b)$ の整数解であって $\|x\| + \|y\|$ が最小のものが代入される.
- $O(\log(x + y))$ 時間

## 使い方 (応用)

- モジュロ逆元 `modinv(a, mod)` を求める:`extgcd(a, mod, x, y)` をすると `a * x + mod * y == 1` になるので,`x``a` のモジュロ逆元である.

## ソラ書きしてみよう

$(1, 0, a)$ と $(0, 1, b)$ に対してユークリッドの互除法をするとできる.
Expand Down
2 changes: 1 addition & 1 deletion docs/modint/BarrettReduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ documentation_of: //src/modint/BarrettReduction.hpp
## 余談

ジャッジが Ice Lake より前の Intel の CPU の場合,64 bit 除算が double 除算より 3 倍以上遅いことが知られている.
あまりではなく商が欲しい場合,mod が固定ではない場合,もっと短くかきたい場合は,double 除算や long double 除算を書くと良い.
あまりではなく商が欲しい場合,mod が固定ではない場合,もっと短く書きたい場合は,double 除算や long double 除算を書くと良い.
2 changes: 1 addition & 1 deletion docs/modint/modint.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ documentation_of: //src/modint/modint.hpp

- タイプ速度重視の簡易 modint
- 速度が欲しいとき:[32 bit で加減算をちゃんと書いた Modint](../extra/modint_fast.hpp)
- mod が素数でないとき:inv を extgcd にする
- mod が素数でないとき:inv を [extgcd](../math/ExtGCD.hpp) にする
- mod が実行時に決まり,これを高速化したいとき:[Barrett Reduction](./BarrettReduction.hpp)

0 comments on commit 45ccdb1

Please sign in to comment.