https://atcoder.jp/contests/abc137/tasks/abc137_f
前提知識
解説
https://atcoder.jp/contests/abc137/submissions/6896149
ラグランジュ補間ができるのでやる。
N個の頂点からO(N2)でN-1次元以下の多項式を復元できる。
https://mathtrain.jp/hokan
ここや
http://kmjp.hatenablog.jp/entry/2019/08/10/0930
kmjpさんの実装を参考にして、実装した。
多項式の前計算が大変なのだが、頑張る。
x=0,1,2,3,...となっていると高速計算できたような気がするが、一旦どんな点であっても大丈夫なやつをライブラリ化した。
O(P2)
int P, A[3030]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> P; rep(i, 0, P) cin >> A[i]; vector<pair<int, int>> ps; rep(i, 0, P) ps.push_back({ i, A[i] }); auto ans = LagrangePolynomialGetCoefficient(ps, P); rep(i, 0, P) { if (i) printf(" "); printf("%lld", ans[i]); } printf("\n"); }