algo — C++23 日本語リファレンス GitHub

polynomial_interpolation

関数 · 形式的冪級数 (FPS)

template <internal::static_modint_c mint>
std::vector<mint> polynomial_interpolation(const std::vector<mint> &x, const std::vector<mint> &y);

概要

多項式補間 (ラグランジュ補間)

相異なる点 $(x_i, y_i)$ を通る次数 $n-1$ 以下の多項式を求める。部分積木を多点評価と 共有し、葉に $y_i / f'(x_i)$ を置いて上向きに畳み込んで復元する。$x_i$ は相異なること。

テンプレートパラメータ

名前 説明
mint static modint

パラメータ

名前 説明
x 評価点の列(相異なる)
y 各点での値の列(x と同じ長さ)

戻り値

std::vector<mint> $f(x_i) = y_i$ を満たす係数列(長さ x.size())

計算量

関連項目