3b1b 题 多项式+单位根

原视频链接

我这里梳理一下思路,并夹带个人私货。

\(S=\{1,2,\dots,2020\}\),问有多少个 \(T\subseteq S\),使得 \(T\) 的元素和为 \(5\) 的倍数(空集的元素和定义为 \(0\))。

要手算能得出答案的方法。

我们很快发现很难暴力算,想到背包,即多项式

\[f(x)=\prod_{i=1}^{2020}(1+x^i) \]

其中 \(x^{5k}(k\in\N)\) 的系数和即为答案。

但是这出锅了,我们很难统计上述的答案。

我们先考虑简单版本:\(x^{2k}(k\in\N)\) 的系数和。

发现我们可算 \(f(1),f(-1)\),然后 \(\frac{f(1)+f(-1)}{2}\) 即为所求。

发现上述方法可行的主要原因是 \(f(1),f(-1)\)\(x\) 的奇数次幂被抵消了。

\(x^{5k}(k\in\N)\) 是否能抵消出来呢?

想到单位根,即 \(\omega^5=1\)

学过 FFT 的小盆友都知道(相当于傅里叶变换):

\[\begin{aligned} \sum_{i=0}^4 \omega^{ik}&=5\cdot[ik\bmod 5=0] \\&=5\cdot[k\bmod 5=0] \end{aligned}\]

我们求 \(f(\omega^0),\dots,f(\omega^4)\),由上面这个柿子,得到

\[\begin{aligned} \frac{1}{5}\sum_{i=0}^4f(\omega^i)&=\frac{1}{5}\sum_{j}\sum_{i=0}^4([x^j]f)\omega^{ij} \\&=\frac{1}{5}\sum_{j}([x^j]f)\sum_{i=0}^4\omega^{ij} \\&=\sum_{j}([x^j]f)[j\bmod 5=0] \end{aligned}\]

即为答案。

(这巧妙运用了单位根循环的特性)

所以我们的任务变为了求 \(f(\omega^0),\dots,f(\omega^4)\)

若有 \(x^5=1\) 的条件则

\[f(x)=g(x)^{404} \\ g(x)=\prod_{i=0}^4(1+x^i) \]

由于 \(5\) 是素数,得到

\[\{\omega^{i},\omega^{2i},\dots,\omega^{4i}\}=\{\omega^{j},\omega^{2j},\dots,\omega^{4j}\} \\ (1\le i,j\le4) \]

所以

\[f(\omega^i)=f(\omega^j)\quad(1\le i,j\le4) \]

所以答案简化成

\[\frac{f(\omega^0)+4f(\omega^1)}{5}=\frac{f(1)+4f(\omega)}{5}=\frac{2^{2020}+4f(\omega)}{5} \]

任务简化成求 \(f(\omega)\),等价于 \(g(\omega)\)

\[\begin{aligned} g(\omega)&=\prod_{i=0}^4(1+\omega^i) \\&=-\prod_{i=0}^4((-1)-\omega^i) \end{aligned}\]

这时候,我们回到开始的开始……单位根的定义 \(x^5-1=0\),我们将 \(x^5-1\) 因式分解得到

\[x^5-1=\prod_{i=0}^4(x-\omega^i) \]

所以上面 \(g(\omega)\) 的柿子相当于将 \(x=-1\) 带入了,所以

\[g(\omega)=-((-1)^5-1)=2 \]

皆大欢喜!我们最终的答案为

\[\frac{2^{2020}+4\times 2^{404}}{5}=\frac{2^{2020}+2^{406}}{5} \]

(验算一下分子真的是 \(5\) 的倍数)

当然如果将 \(2020\) 换成非 \(5\) 的倍数(如 \(2022\))也是可做的,但是

\[f(\omega^i)=f(\omega^j)\quad(1\le i,j\le4) \]

就不成立了,所以我们 \(5\)\(f\) 都要算(甚至可能后面 \((1+\omega)\) 的因子消不完),较为麻烦。

当然将 \(5\) 换成别的素数也是可行的,非素数的做法也类似。

posted @ 2022-07-18 19:15  ShaoJia  阅读(52)  评论(0)    收藏  举报