Preface
单位根反演,顾名思义就是用单位根变换一类式子的形式。有关单位根的基本概念可见我的这篇博客。
Formula
单位根反演的公式很简单:
[k|n]=1kk−1∑i=0ωnik
Proof
分类讨论:
- k|n. 那么 (∀i)(ωnik=1),所以右侧为 1k∑k−1i=01=1。
- k≠n. 等比数列求和,右侧为 1k⋅1−ωknk1−ωnk,其中 ωknk=1,故分子为 0,分母不为 0,式子的值为 0。
综上,得证。
Inference
实际问题中,我们往往需要求出对于某个多项式(多为生成函数)f 的特定倍数次数的系数和。即求:
⌊nk⌋∑i=0[xik]f(x)
运用单位根反演的基本公式变形:
⌊nk⌋∑i=0[xik]f(x)=n∑i=0[k|i][xi]f(x)=n∑i=0[xi]f(x)⋅1kk−1∑j=0ωijk=1kk−1∑j=0n∑i=0[xi]f(x)(ωjk)i=1kk−1∑j=0f(ωjk)
只要能快速求出 f 在所有 k 次单位根处的点值,就能 O(k) 得出原式的值啦。
更方便的形式,若我们想求 imodk=r 时 [xi]f(x) 之和,只需要在运用反演时移动一下 ωk 的指标:
n∑i=0[imodk=r][xi]f(x)=1kn∑i=0(k−1∑j=0ωj(i−r)k)[xi]f(x)=1kk−1∑j=0ω−jrkf(ωjk)
当然,我们常用原根代替单位根。
Examples
「LOJ 6485」 LJJ 学二项式定理 & my solution.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现