\(\mathcal{Preface}\)

  单位根反演,顾名思义就是用单位根变换一类式子的形式。有关单位根的基本概念可见我的这篇博客

\(\mathcal{Formula}\)

  单位根反演的公式很简单:

\[[k|n]=\frac{1}k\sum_{i=0}^{k-1}\omega_k^{ni}
\]

\(\mathcal{Proof}\)

  分类讨论:

  1. \(k|n\). 那么 \((\forall i)(\omega_k^{ni}=1)\),所以右侧为 \(\frac{1}k\sum_{i=0}^{k-1}1=1\)。
  2. \(k\not=n\). 等比数列求和,右侧为 \(\frac{1}k\cdot\frac{1-\omega_k^{kn}}{1-\omega_k^n}\),其中 \(\omega_k^{kn}=1\),故分子为 \(0\),分母不为 \(0\),式子的值为 \(0\)。

  综上,得证。

\(\mathcal{Inference}\)

  实际问题中,我们往往需要求出对于某个多项式(多为生成函数)\(f\) 的特定倍数次数的系数和。即求:

\[\sum_{i=0}^{\lfloor \frac{n}k\rfloor}[x^{ik}]f(x)
\]

  运用单位根反演的基本公式变形:

\[\begin{aligned}
\sum_{i=0}^{\lfloor\frac{n}k\rfloor}[x^{ik}]f(x)&=\sum_{i=0}^n[k|i][x^i]f(x)\\
&=\sum_{i=0}^n[x^i]f(x)\cdot\frac{1}k\sum_{j=0}^{k-1}\omega_k^{ij}\\
&=\frac{1}k\sum_{j=0}^{k-1}\sum_{i=0}^n[x^i]f(x)(\omega_k^j)^i\\
&=\frac{1}k\sum_{j=0}^{k-1}f(\omega_k^j)
\end{aligned}
\]

  只要能快速求出 \(f\) 在所有 \(k\) 次单位根处的点值,就能 \(\mathcal O(k)\) 得出原式的值啦。

  更方便的形式,若我们想求 \(i\bmod k=r\) 时 \([x^i]f(x)\) 之和,只需要在运用反演时移动一下 \(\omega_k\) 的指标:

\[\begin{aligned}
\sum_{i=0}^n[i\bmod k=r][x^i]f(x)&=\frac{1}k\sum_{i=0}^n\left(\sum_{j=0}^{k-1}\omega_k^{j(i-r)} \right)[x^i]f(x)\\
&=\frac{1}k\sum_{j=0}^{k-1}\omega_{k}^{-jr}f(\omega_k^j)
\end{aligned}
\]

  当然,我们常用原根代替单位根。

\(\mathcal{Examples}\)

  「LOJ 6485」 LJJ 学二项式定理 & my solution.

Note -「单位根反演」学习笔记的更多相关文章

  1. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

  2. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  3. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...

  4. 「Manacher算法」学习笔记

    觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...

  5. 「FHQ Treap」学习笔记

    话说天下大事,就像fhq treap —— 分久必合,合久必分 简单讲一讲.非旋treap主要依靠分裂和合并来实现操作.(递归,不维护fa不维护cnt) 合并的前提是两棵树的权值满足一边的最大的比另一 ...

  6. 「线性基」学习笔记and乱口胡总结

    还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...

  7. 「Link-Cut Tree」学习笔记

    Link-Cut Tree,用来解决动态树问题. 宏观上,LCT维护的是森林而非树.因此存在多颗LCT.有点像动态的树剖(链的确定通过$Access$操作),每条链用一颗$splay$维护.$spla ...

  8. 「AC自动机」学习笔记

    AC自动机(Aho-Corasick Automaton),虽然不能够帮你自动AC,但是真的还是非常神奇的一个数据结构.AC自动机用来处理多模式串匹配问题,可以看做是KMP(单模式串匹配问题)的升级版 ...

  9. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势

    0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...

随机推荐

  1. vue爬坑之路(webpack 配置篇)

    在vue cli下 1.npm run dev 打开浏览器在config的index.js中修改autoOpenBrowser为true 关闭sourcemap productionSourceMap ...

  2. 阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装)

    原文链接:? 传送门 前一阵子购买了阿里云的云服务器ECS(学生优惠),折腾了一阵子后对有些东西不太满意,所以就重新初始化了磁盘,刚好要重新安装图形界面,于是就顺手写了这么一篇文章. 第一次登陆服务器 ...

  3. 阿里神器 Seata 实现 TCC模式 解决分布式事务,真香!

    今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火的一种柔性事务 ...

  4. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  5. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  6. 很详细的FFT(快速傅里叶变换)概念与实现

    FFT 首先要说明一个误区,很多人认为FFT只是用来处理多项式乘的,其实FFT是用来实现多项式的系数表示法和点值表示法的快速转换的,所以FFT的用处远不止多项式乘. FFT的前置知识:点值表示法,复数 ...

  7. gin中模型的绑定和验证

    要将请求体绑定到结构体中,使用模型绑定. Gin目前支持JSON.XML.YAML和标准表单值的绑定(foo=bar&boo=baz). Gin使用 go-playground/validat ...

  8. C++ DLL注入工具完整源码

    先上源码 #include "Inject_Main.h" #include "resource.h" #include <Windows.h> # ...

  9. django学习总结1

    ## 内容回顾 #### 1.所有的命令 ##### 下载安装 ​ pip install django==1.11.20 - i 源 ##### 创建项目 ​ django-admin startp ...

  10. ApacheCN C# 译文集 20211124 更新

    C# 代码整洁指南 零.前言 一.C# 代码标准和原则 二.代码审查--过程和重要性 三.类.对象和数据结构 四.编写整洁的函数 五.异常处理 六.单元测试 七.端到端系统测试 八.线程和并发 九.设 ...