一个想法

下课无聊的时候想了一会,而后发现了一点东西。数组

 

$$n = \prod_{i = 1} ^ m p_i ^ {a_i}$$函数

$$f(n) = \sum_{i = 1} ^ m a_i$$学习

给定 $n < 998244353$ ,求 $1$ 到 $n$ 中有多少个数字,知足 $f(i)$ 为偶数。lambda

 

设有 $x$ 个奇数,$y$ 个偶数,显然 $x + y = n$ ,若是再可以构造一个 $x, y$ 的线性组合,并可以方便地计算出其取值,那么就可以解决问题了。循环

刚好我学习杜教筛的时候知道有这样一个函数:im

$$\lambda(n) = (-1) ^ {\sum_{i = 1} ^ m a_I}$$总结

考虑 $T = \sum_{i = 1} ^ n \lambda(i)$ 的意义,就是 $1$ 到 $n$ 中,偶数个数减去奇数个数,即 $T = y - x$ 。思考

至于 $T$ 怎么用杜教筛计算,利用性质工作

$$(\lambda \times I)(n) = [n \text{彻底平方数}]$$time

便可。

 

这道题看起来很巧妙,可是是否真的是这么巧妙?

这道题引发了个人一个思考:能不能对于某个给定的 $k$ ,求出分别有多少个数知足 $f(i) \bmod k = 0, 1, 2, ..., k - 1$ 。

 

我是从类比入手的。

设出 $x_0, x_1, ..., x_{k - 1}$ ,而后构建它们之间的 $k$ 个线性无关的线性组合,并可以方便地计算出这些线性组合的值。

观察到本来 $k = 2$ ,一个式子是 $1 x + 1 y$ ,一个式子是 $1 x - 1 y$ ,而 $1$ 和 $-1$ 都是 $2$ 次单位负根,因而我就猜测,第 $i$ 个式子为:

$$(w_k ^ 0) ^ i x_0 + (w_k ^ 1) ^ i x_1 + ... + (w_k ^ {k - 1}) ^ i x_{k - 1} = ?$$

能够看做 $x_j$ 中的项贡献 $(w_k ^ j) ^ i$ ,从新写做

$$(w_k ^ 0) ^ i x_0 + (w_k ^ 1) ^ i x_1 + ... + (w_k ^ {k - 1}) ^ i x_{k - 1} = \sum_{j = 1} ^ n \lambda_i(j)$$

$$\lambda_i(n) = (w_k ^ i) ^ {(f(n) \bmod k)} = w_k ^ {i f(n)}$$

发现

$$\lambda_i(p ^ q) = w_k ^ i q$$

$$\lambda_i(p) = w_k ^ i$$

$$\lambda_i(p ^ a q ^ b) = w_k ^ i (a + b) = \lambda_i(p ^ a) \lambda(q ^ b)$$

万事俱备了,$p ^ q$ 知道,$p$ 知道,并且是积性函数,因此直接 min_25 筛。

总结一下,构造了 $k$ 个式子 $(w_k ^ 0) ^ i x_0 + ... + (w_k ^ {k - 1}) ^ i x_{k - 1} = \sum_{j = 1} ^ n \lambda_i (j)$ ,而后能够获得 $\lambda_i(j)$ 的积性,而后 min_25 筛,而后 IDFT 。

 

其实根本没这么麻烦,直接考虑 $k$ 次循环多项式,证实一下积性,直接带着数组去 min_25 筛。一个不从类比入手的人应该很容易想到这一点。

而我作的工做,只是先进行了一次 DFT ,用 min_25 筛求出了 DFT 的值,而后再 IDFT 。

总之仍是本身太傻逼了。

 

退役了真不高兴。假如拿好那 68 分的 day1t3 该多好。

相关文章
相关标签/搜索