1 |
|
拉格朗日插值
求: 自然数幂和:
$$
\\sum\_{i = 1}^{n}i^k % mod
$$
一阶求和公式: $f(n) = n \* (n + 1) / 2$;
二阶求和公式: $f(n) = n \* (n + 1) \* (2 \* n + 1) / 6$;
三阶求和公式: $f(n) = n^2\*(n+1)^2/4$;
k阶求和公式:
拉格朗日插值公式:
$$
f(x)=\\sum\_{i=0}^{n} y\_{i} \\prod\_{j \\neq i} \\frac{x-x\_{j}}{x\_{i}-x\_{j}}
$$
拉格朗日插值: 通过n + 1个点确定唯一一个最大n次的多项式方程f(x), 使得这条曲线经过n + 1个点.
显然, k阶幂和公式是一个k + 1阶多项式, 所以我们需要k + 2个点, 往往这类题, k是很小的, 所以, 完全可以O(k), 暴力去算k + 2个点的值. 然后套公式.
code模板(出处:[https://www.cnblogs.com/lfri/p/11556156.html](https://www.cnblogs.com/lfri/p/11556156.html)):
Author: Qin Peng
Permalink: https://qpwlkq.github.io/2020/11/17/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E6%8F%92%E5%80%BC/
License: Copyright (c) 2020 BY QPWLKQ LICENSE
Slogan: 每一个不曾起舞的日子, 都是对生命的辜负