单位根反演小记
反演公式
证明很简单,等比数列求和即可。
计算单位根
一般来说我们都是计算原根,而对于一个素数 \(p\),\(g\) 是原根当且仅当对于所有 \(p-1\) 的质因子 \(p_i\) 都有 \(g^{\frac{p-1}{p_i}} \not\equiv 1 \pmod p\)。
而最小质因子是 \(O(m^{\frac{1}{4}})\),所以我们暴力枚举加检验即可。
int cal() {//找到 mod 的最小原根
int phi = mod - 1, cur = 0;//分解质因数
for (int d = 2; d * d <= phi; d++) {
if (phi % d == 0) {
p[++cur] = d;
while (phi % d == 0)
phi /= d;
}
}
if (phi > 1)
p[++cur] = phi;
int g = 0;
for (int i = 1; i < mod; i++) {
bool flg = true;
for (int j = 1; j <= cur; j++)
if (fpow(i, (mod - 1) / p[j], mod) == 1) {
flg = false;
break;
}
if (flg) {
g = i;
break;
}
}
return g;
}
应用
一定要注意 \(\omega_{n}^0 = 1\)!!!!
牛客Wannafly挑战赛11E 白兔的***难
题意:
给定 \(k \le 2^20, n \le 10^{16}, p = 998244353\),求 \(t \in [0, k)\),\(a_t =\sum_{k | i,0 \le i + t \le n} \binom{n}{i + t}\)。
思路:
直接单位根反演:
不妨令 \(y_j = (1 + \omega_k^j)^n\),则上式就是一个 IDFT 形式的东西,利用 NTT 解决即可。
P5293 [HNOI2019] 白兔之舞
设 \(W\) 是 \(n \times n\) 的邻接矩阵,则我们有走 \(m\) 步的方法数等于:
所以我们要求的就是对于所有 \(t\):
单位根反演可以化为:
不妨设 \(A_j = (I + \omega_{k}^jW)^L\),\(a_j\) 为 \(W\) 中编号第 \(j\) 个的系数,则我们要求的就是 \(IDFT(a)\)。使用 MTT 即可解决。
【牛客Wannafly挑战赛23 F】计数
直接大力推式子:
转化成标准的矩阵树定理形式求解,时间复杂度 \(O(kn^3)\)。
LOJ6485 LJJ 学二项式定理
考虑对余数分类讨论,假设 \(i \bmod 4 = k\),则贡献为:
我们还是利用单位根反演,最终可以推出:
近似于 \(O(1)\) 计算了。
P5591 小猪佩奇学数学
很好的一道题。
首先这道题明显复杂度和 \(k\) 相关,且 \(k\) 的特性以及模数是 \(998244353\) 告诉我们这道题很明显要让我们使用单位根来做。
我们希望把式子化成存在 \(\bmod\) 的形式,不妨考虑下面这个式子:
所以我们将计算的式子变为:
我们分别计算两部分,对于:
我们根据组合数的重要性质 \(\binom{n}{i} = \frac{n}{i}\binom{n - 1}{i - 1}\),得到 \(i\binom{n}{i} = n\binom{n-1}{i-1}\),所以我们可以将其转化为标准的二项式定理,从而得到其封闭形式:
对于后面的式子,枚举余数 \(r\),可以得到:
直接 IDFT 即可,时间复杂度 \(O(k \log k)\)。
Guideposts OpenJ_POJ - 1058
类似白兔之舞可以转化成:
于是我们每次只需要计算矩阵快速幂,然后将 \((s, t)\) 作为答案加起来即可。
BZOJ3328 PYXFIB
转化成:
然后单位根反演,用矩阵快速幂来计算即可。
UOJ450 复读机
绝世好题,被我推出来了,赢()
先考虑答案,我们可以写一个暴力一点的式子:
这就是答案。
考虑计算,对于这种带有多项式系数的式子不难想到 EGF,我们定义:
则我们要求的就是 \(n![x^n]F^k(x)\),考虑对于 \(F(x)\) 单位根反演:
则我们要求的就是:
发现 \(d\) 只有三种取值,我们分类讨论:
对于 \(d=1\) 答案为:
直接 taylor 展开得到:
考虑组合意义不难发现相当于没有任何限制,每一秒可以任意选一个复读机。
对于 \(d=2\),答案为:
\(O(k)\) 枚举计算即可。
对于 \(d=3\),类似的,我们可以得到最后答案为:
可以 \(O(k^2)\) 计算。这道题就做完了。
个人觉得是单位根反演题中不那么套路的题。