关闭

拉格朗日插值法(求自然数幂和)

285人阅读 评论(0) 收藏 举报
分类:

背景

ni=1ik,给定n<=1e18,k<=1e6.

分析

g(x)=xi=1ik。考虑k=1与k=2时的公式,不难得出每个g(x)实际上都是一个k+1次多项式。(这是猜想,具体证明看http://blog.csdn.net/jokerwyt/article/details/54141757,那个递推式就是k+1次的)

那么问题就变成了已知一个k+1次多项式L(x)的k+2个对应值点(xi,L(xi)), (由于k很小所以暴力求出k+2个对应值点)
求L(或者说L(x0))
这个问题有解且唯一,因为对应方程组有唯一解。
可以使用高斯消元求解,解出系数。时间复杂度为O(k3)

拉格朗日插值法

拉格朗日插值法正是用于解决这种问题。如果点随便给,时间复杂度为O(k^2),但是对于有规律的给出点对(x,y)可以更快。
参考中国剩余定理,我们可以写出答案多项式的形式(之一)
L(x)=yili(x)
li(x)是构造的一个函数,满足li(xi)=1li(xj,i!=j)=0
也就是说这个多项式经过给出的每一点。又因为解唯一,所以这就是所求多项式。

li的构造方法比较简单:首先因为li(xj)=0。所以其有根xj.因此有因式(x-xj).
然后对于li(xi)=1,只需要消除上面构造带来的影响,也就是对于j!=i,除掉(xi-xj).
感性告诉我li是唯一构造的.
因此,只需要花费O(k * 计算li(x)的时间)就可以推算出L(x0)的答案了。在这一题中,li在预处理后可以O(1)算出.
对于一段连续的负数相乘,不要傻傻的将其加上mo再算阶乘(过大),直接将负号提出,其余按正数阶乘算

自然数幂和的拉格朗日解法

预处理出f(1..k+2)的值,然后直接拉格朗日插值。因为此处的li是有规律的(数轴上一段数相乘),可以做到O(k)的时间。(负数阶乘记得提出负号)

0
0
查看评论

51nod 1258 序列求和 V4 拉格朗日插值法求自然数幂和

题意T(n) = n^k,S(n) = T(1) + T(2) + …… T(n)。给出n和k,求S(n)。 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^2 + 5^2 = 55。 由于结果很大,输出S(n) Mod 1000000007的结果即可。 1 ...
  • qq_33229466
  • qq_33229466
  • 2017-10-07 14:49
  • 306

【拉格朗日插值法求自然数幂和】

求自然数幂和:  1 1 1.什么是拉格朗日插值法 拉格朗日插值法,就是对于给定的几个点找到关于这几个点的函数; 以下是拉格朗日插值法的具体使用: 对某个多项式函数,已知有给定的k + 1个取值点: {\displaystyle (x_{0},y_{0}),\...
  • baidu_35643793
  • baidu_35643793
  • 2017-07-17 22:21
  • 582

自然数幂和(拉格朗日插值法)

今天A组的第一题是这个 Σ(☉▽☉”a 题目: ∑ni=1ik\sum_{i=1}^n i^k 对一个大于i的质数取模。 1 解法: 不懂拉格朗日插值法的戳这儿。
  • Cold_Chair
  • Cold_Chair
  • 2017-10-06 16:30
  • 122

51Nod-1228-序列求和

ACM模版描述题解很想要轻描淡写的告诉大家,在《具体数学》一书第六章第五节有“伯努利数”的详细讲解,但是感觉这又有些长篇大论讲得着实不错,但是对于第一次接触伯努利数并且数学不是特别好的人来说,实在是有些难以接受,于是我选择更加简单的,直接用结论吧。这里很明显的用到了伯努利数,那么 ∑i=1nik=1...
  • f_zyj
  • f_zyj
  • 2017-08-11 00:08
  • 218

解决自然数幂和的方法

题意 ∑i=1nimmodp\sum_{i=1}^{n}{i^m}\mod p 暴力 呵呵,快速幂 高斯消元 从k次,推到k+1次,求系数 矩阵乘法 还不会,有点难搞 倍增 像快速幂一样,打一个f[i][j] 差分表 (n+1)k+1−nk+1=C1k+1∗nk+……+...
  • doyouseeman
  • doyouseeman
  • 2016-03-08 12:51
  • 1481

高效求解自然数k次幂和的方法

前言 寒假集训比赛时遇到了一道《WYF的盒子》,题目大意就是求∑ni=mik\sum_{i=m}^n i^k对pp取模的结果。 其中有的数据点满足n−m≤5000n-m\le 5000但k≤1012k\le{10}^{12},剩下的数据点满足n,m≤1012n,m\le10^{12}且k≤200...
  • a_crazy_czy
  • a_crazy_czy
  • 2016-03-21 20:19
  • 1006

拉格朗日插值法(求自然数幂和)

背景 求∑ni=1ik\sum_{i=1}^{n} i^k,给定n 分析 设g(x)=∑xi=1ikg(x)=\sum_{i=1}^{x} i^k。考虑k=1与k=2时的公式,不难得出每个g(x)实际上都是一个k+1次多项式。(这是猜想,具体证明看http://blog.csdn.net/...
  • jokerwyt
  • jokerwyt
  • 2017-10-06 16:10
  • 285

拉格朗日插值法(求自然数幂和)

背景 求∑ni=1ik\sum_{i=1}^{n} i^k,给定n 分析 设g(x)=∑xi=1ikg(x)=\sum_{i=1}^{x} i^k。考虑k=1与k=2时的公式,不难得出每个g(x)实际上都是一个k+1次多项式。(这是猜想,具体证明看http://blog.csdn.net/...
  • jokerwyt
  • jokerwyt
  • 2017-10-06 16:10
  • 285

拉格朗日插值法实现

拉格朗日插值法,代码,数学,算法
  • xieshimao
  • xieshimao
  • 2016-08-23 12:22
  • 1319

拉格朗日插值法复习小计

拉格朗日插值法概述因为n次方的函数图像可以有n+1个点确定(比如说y=kx+b就只用两个点确定,y=ax2+bx+cax^2+bx+c,只用三个点就可以确定),所以个n次方的方程给你n+1个x或者y就能确定这个方程。拉格朗日插值法就可以把这n+1个对应的值插进一个方程,然后给一个x,可以求出y。比如...
  • doyouseeman
  • doyouseeman
  • 2016-02-26 20:40
  • 1280
    个人资料
    • 访问:39687次
    • 积分:1921
    • 等级:
    • 排名:千里之外
    • 原创:153篇
    • 转载:1篇
    • 译文:0篇
    • 评论:17条
    最新评论