一個想法

下課無聊的時候想了一會,而後發現了一點東西。數組

 

$$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 該多好。

相關文章
相關標籤/搜索