\(f(i)\) 为 \(k\) 次多项式,\(\sum_{i=0}^nf(i)\cdot q^i\) 的 \(O(k\log k)\) 求法

令 \(S(n)=\sum_{i=0}^{n-1}f(i)\cdot q^i\),有一个结论,存在一个 \(\le k\) 次多项式 \(g(n)\) 使得 \(S(n)=q^ng(n)-g(0)\)。

证明

\(n=0\) 时显然成了,假设 \(n\le k-1\) 时都成立,考虑 \(n=k\) 时的情况:

\[qS(n)=\sum_{i=0}^{n-1}f(i)\cdot q^{i+1}=q^{n+1}g(n)-g(0)
\]
\[S(n+1)=\sum_{i=0}^nf(i)\cdot q^i=q^{n+1}g(n+1)-g(0)
\]

两式相减可得:

\[\sum_{i=1}^n(f(i)-f(i-1))\cdot q^i+f(0)=q^{n+1}(g(n+1)-g(n))
\]

令 \(h(x)=f(x)-f(x-1)\),\(h(x)\) 是一个 \(k\) 次多项式的差分,也就是 \(k-1\) 次多项式。

那么左式等于 \(\sum_{i=1}^nh(i)\cdot q^i+f(0)\),是 \(k-1\) 次多项式。

则右式 \(g(n+1)-g(n)\) 是 \(k-1\) 次多项式,故 \(g(n)\) 是 \(k\) 次多项式。

求解

\[s(n)-S(n-1)=q^n\cdot g(n)-q^{n-1}\cdot g(n-1)=q^{n-1}\cdot f(n-1)
\]

\[q\cdot g(n)-g(n-1)=f(n-1)
\]

因为已知 \(f(0\cdots k)\),故如果知道 \(g(0)\),就能递推求出 \(g(1\cdots k)\),然后插值得到 \(g(n+1)\)。

设 \(g(0)=x\),又递推式可得 \(g(1\cdots k)\) 是关于 \(x\) 的一次函数,又由 \(k\) 次多项式的 \(k+1\) 次差分为 \(0\),解方程即可算出 \(g(0)\)。

[笔记] $f(i)$ 为 $k$ 次多项式,$\sum_{i=0}^nf(i)\cdot q^i$ 的 $O(k\log k)$ 求法的更多相关文章

  1. d[k]=eval(k)

    lk = ['oid', 'timestamp', 'signals', 'area', 'building', 'city', 'name', 'floor', 'industry', 'regio ...

  2. printf("%f\n", 3);输出结果为什么是0.000000(转载)

    printf不会关心你输入的参数的类型,你输入的实际是 printf("%f",3),但是这个整型3不会被隐式类型转换为浮点型,而是被直接按内存内容当作浮点型 也就是说,内部使用等 ...

  3. 在​W​C​F​中​使​用​消​息​队​列​M​S​M​Q

    在WCF中使用消息队列MSMQ 在windows平台上,MSMQ是首选的消息传递中间件,它是一种高速.异步.可靠的通信机制,当我们在Internet上的两个应用需要交换信息时,使用这样的中间件可能是必 ...

  4. 判断字符串是否包含字母‘k’或者‘K’

    判断字符串是否包含字母‘k’或者‘K’ public bool IsIncludeK(string temp) { temp = temp.ToLower(); if (temp.Contains(' ...

  5. js为Object对象动态添加属性和值 eval c.k c[k]

    const appendInfo = () => { const API_SECRET_KEY = 'https://github.com/dyq086/wepy-mall/tree/maste ...

  6. Xctf-easyapk

    Xctf-easyapk Write UP 前期工作 查壳 无壳 运行 没什么特别的 逆向分析 使用jadx反编译查看代码 先看看文件结构 MainActivity代码 public class Ma ...

  7. 口胡FFT现场(没准就听懂了)&&FFT学习笔记

    前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...

  8. 任意模数NTT和FFT的玄学优化学习笔记

    本来一直都是写\(7\)次的\(MTT\)的--然后被\(shadowice\)巨巨调教了一通之后只好去学一下\(4\)次的了-- 简单来说就是我们现在需要处理一类模数不为\(NTT\)模数的情况 这 ...

  9. polynomial&generating function学习笔记

    生成函数 多项式 形如$\sum_{i=0}^{n}a_i x^i$的代数式称为n阶多项式 核函数 {ai}的核函数为f(x),它的生成函数为sigma(ai*f(i)*x^i) 生成函数的加减 {a ...

随机推荐

  1. MyBatis与Hibernate有哪些不同?

      (1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句. (2)Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活 ...

  2. phpstorm 快捷生成函数

    在函数上一行键入 /** /** * @param $a * @param $b * @return mixed */ function abc($a, $b) { $c = $a + $b; ret ...

  3. JavaScript HTML5事件

    有3个页面级事件在HTML5版本中被引入.  事件  说明  DOMContentLoaded  在DOM树形成后触发(与此同时,图片.CSS和JavaScript可能还在加载).在这个事件中,脚本运 ...

  4. 一个 Spring 的应用看起来象什么?

    一个定义了一些功能的接口.这实现包括属性,它的 Setter , getter 方法和函数等.Spring AOP.Spring 的 XML 配置文件.使用以上功能的客户端程序.

  5. Mybatis入门程序(一)

    1.入门程序实现需求 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户(二) 更新用户(二) 删除用户(二) 2.引入Mybatis所需 jar 包(Maven工程) < ...

  6. windows编写sh脚本在linux上不能执行

    报错:/bin/sh^M:bad interpreter: 编码没有被识别, vi *.sh Esc 输入 :set fileformat 查看文件格式(显示  fileformat=dos) Esc ...

  7. CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2)

    一.CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2) 采用的类: import org.apache.commons.collec ...

  8. 树莓派安装ros

    之前电脑安装过ros感觉还好,没成想这次在树莓派上安装费老劲了,出现了很多错误,装了卸,卸了装废了半天劲下面将一些安装的错误和问题做个总结方便以后的安装也希望给别人一个参考 ros安装(对照自己的版本 ...

  9. 解决SVG animation 在IE中不起作用

    问题描述 CSS animation没办法解决SVG路径运动的问题,下图路径运动的过程,通过查资料发现所有的IE的版本都不支持SVG animation.在IE中没有水流动的效果. 主要代码 < ...

  10. APICloud重磅支持Atom编辑器,并建立开发工具核心库

    APICloud技术再次升级,不仅支持Atom编辑器开发工具,并推出核心开发工具库,使开发者进行App开发更便捷高效. APICloud支持Atom编辑器开发工具 APICloud始终坚持多开发工具支 ...