Note -「单位根反演」学习笔记
\(\mathcal{Preface}\)
单位根反演,顾名思义就是用单位根变换一类式子的形式。有关单位根的基本概念可见我的这篇博客。
\(\mathcal{Formula}\)
单位根反演的公式很简单:
\]
\(\mathcal{Proof}\)
分类讨论:
- \(k|n\). 那么 \((\forall i)(\omega_k^{ni}=1)\),所以右侧为 \(\frac{1}k\sum_{i=0}^{k-1}1=1\)。
- \(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)&=\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\) 的指标:
\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 -「单位根反演」学习笔记的更多相关文章
- Note -「Lagrange 插值」学习笔记
目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...
- Note -「动态 DP」学习笔记
目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...
- Note -「Mobius 反演」光速入门
目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...
- 「Manacher算法」学习笔记
觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...
- 「FHQ Treap」学习笔记
话说天下大事,就像fhq treap —— 分久必合,合久必分 简单讲一讲.非旋treap主要依靠分裂和合并来实现操作.(递归,不维护fa不维护cnt) 合并的前提是两棵树的权值满足一边的最大的比另一 ...
- 「线性基」学习笔记and乱口胡总结
还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...
- 「Link-Cut Tree」学习笔记
Link-Cut Tree,用来解决动态树问题. 宏观上,LCT维护的是森林而非树.因此存在多颗LCT.有点像动态的树剖(链的确定通过$Access$操作),每条链用一颗$splay$维护.$spla ...
- 「AC自动机」学习笔记
AC自动机(Aho-Corasick Automaton),虽然不能够帮你自动AC,但是真的还是非常神奇的一个数据结构.AC自动机用来处理多模式串匹配问题,可以看做是KMP(单模式串匹配问题)的升级版 ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
随机推荐
- spring security 继承 WebSecurityConfigurerAdapter 的重写方法configure() 参数 HttpSecurity 常用方法及说明
HttpSecurity 常用方法及说明 方法 说明 openidLogin() 用于基于 OpenId 的验证 headers() 将安全标头添加到响应 cors() 配置跨域资源共享( CORS ...
- 学习笔记--Java字面值
Java 字面值 /** * 关于字面值: * * - 字面值:10.100."abc"."a".true.false * * - 字面值就是数据 * * - ...
- Windows 重装系统,配置 WSL,美化终端,部署 WebDAV 服务器,并备份系统分区
最新博客文章链接 最近发现我 Windows11 上的 WSL 打不开了,一直提示我虚拟化功能没有打开,但我看了下配置,发现虚拟化功能其实是开着的.然后试了各种方法,重装了好几次系统,我一个软件一个软 ...
- SYCOJ1613递归函数
题目-递归函数 (shiyancang.cn) 记忆化dfs,注意dp的限制范围 #include<bits/stdc++.h> using namespace std; const in ...
- python 读取配置文件ini ---ConfigParser
Python读取ini文件需要用到 ConfigParser 模块 关于ConfigParser模块的介绍详情请参照官网解释:https://docs.python.org/2.7/library/c ...
- MINItest软件架构总结
MINItest软件架构总结 ----helloWen MINItest软件架构总结1. Problem Description2. Analysis3. Solution3.1. 通过读取设备信息来 ...
- leetcode 55. 跳跃游戏 及 45. 跳跃游戏 II
55. 跳跃游戏 问题描述 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1, ...
- 【pwn】攻防世界 pwn新手区wp
[pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...
- 将Cesium ion上的3D Tiles和Bing imagery应用到osgEarth
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Pelican Mapping 激动的宣布支持加载Cesium ...
- 字符串自实现(一)(mystrcpy,mystrcat,mystrcmp)
char* mystrcpy(char* str_one,const char* str_two) { char* tmp = str_one; while (*str_one++ = *str_tw ...