标签:地址 状态 service nav server serve man 网站 出现
给你 \(n\) 个坐标 \(P(x_i,y_i)\),求经过这 \(n\) 个点的不超过 \(n-1\) 次的多项式 \(f(x)\) 在 \(k\) 处的点值。
我们构造出 \(n\) 个多项式 \(g_i(x)\):
仔细观察可以发现,\(g_i(x)\) 这个多项式在 \(x_i\) 处点值为 \(y_i\) ,在 \(x_j(j!=i)\) 处的点值全部为 \(0\)。这也正是我们构造它的用意。我们令:
根据 \(g_i(x)\) 的定义可以发现,\(f(x)\) 正是我们要求的多项式。直接把 \(k\) 往多项式里带就好了,记得预先线性求逆元。时间复杂度:\(O(n^2)\)。
把上面的式子带进去:
我们记:
那么原式就变成了这样:
这样我们就把复杂度优化到了 \(O(n)\)。
记
那么
然后记
最后原式为:
求自然数幂和:\(S_k(n)=\sum\limits_{i=1}^n i^k\) (\(n\leq 10^{12} ,k\leq 10^7\))
由于数据范围过大,普通的方法已经不适用,我们试着列一个式子:
经过一波神奇的操作,我们发现 \(S_k(n)\) 被消掉了!这看似是一个很不好的消息,但是通过剩下来的式子我们惊喜的发现可以推出 \(S_{k-1}(n)\) 的表达式:
用归纳法可以很轻松的知道 \(S_{k-1}(n)\) 是个 \(k\) 次多项式。同理 \(S_k(n)\) 是个 \(k+1\) 次多项式。那么我们求 \(S_k(n)\) 的时候,就可以线性筛预处理出 \(S_k(1),S_k(2),\cdots,S_k(k+1)\) 的值,然后拉格朗日插值就可以做到 \(O(k)\) 的时间内求出自然数幂和了。
这篇文章里有非常详细的具体推式子过程。
补充一下同或运算的式子(来自OI Wiki):
(\(C_1\) 表示 \(i|j\) 奇偶性为 \(0\),\(C_2\) 表示 \(i|j\) 的奇偶性为 \(1\))
标签:地址 状态 service nav server serve man 网站 出现
原文地址:https://www.cnblogs.com/angle-yan/p/13456393.html