用一道題水過積性函式

2021-08-09 14:10:05 字數 2367 閱讀 4182

就以這道sb題為例,我們來討論一下實際題目中解決積性函式的簡單問題(?).

blog主蒟蒻,如果要找數論神犇請%%%idy002,或者數論大佬%%%%%doggu。

所以就不給數學上的證明了,請自學(?死記莫比烏斯反演公式)。

基本的莫比烏斯反演: f(

n)=∑

d|ng

(d)

−>g(

n)=∑

d|nf

(n)μ

(⌊nd

⌋) =

∑d|n

f(⌊n

d⌋)μ

(d)

=∑(∑

k|nd

g(k)

)μ(d

) =∑

k|ng

(k)[

∑d|n

kμ(d

)]因為 ∑d

|nkμ

(d)=

e(nk

),e(

n)=[

n==1]

所以證畢。

開始:

先考慮資料範圍,107

,很明顯,線性篩。

首先一看這個函式就有φμ

σ0(就

是τ) 等函式(也可以考慮有單位函式id

(n)=

n 與冪函式 id

k(n)

=nk ),所以可以使用???推公式。對於f

(n) ,有兩個大部分合成。

乙個就是(∑

d|nφ

(d))

m ,如果你的積性函式還過得去,比blog好的話,你可以看出這玩意兒就是nm

,為什麼呢?因為∑d

|nφ(

d)=n

可以用莫比烏斯反演證明,同類(∑d

|ndμ

(⌊nd

⌋)=φ

(n) ).

所以左邊就變成了nm

,完美,繼續。對於∑

d|nτ

(d)μ

(⌊nd

⌋)⌊n

d⌋。 對於i

d(n)

=n,這類的函式就是單位函式,是積性函式。那麼⌊n

d⌋就解決了。 對於μ

τ 就不解釋了,肯定是積性函式。

那麼一條總要的結論,積性函式*積性函式得到的函式也一定是積性函式。 令g

(n)=

∑d|n

τ(d)

μ(⌊n

d⌋)⌊

nd⌋ ,那麼g(

n)也一定是積性函式。g(

n),再乘上nm

就行了。

還是先解決簡單的nm

,這玩意兒其實可以看做乙個冪函式id

k(n)

=nk

關鍵是處理右邊的一坨∑d

|nτ(

d)μ(

⌊nd⌋

)⌊nd

⌋ ,推一推公式。

對於線性篩中的操作,若有

n 為質數,有g(

n)=τ

(1)∗

μ(1)

∗1+τ

(n)∗

μ(n)

∗n=2

∗1∗1

+1∗(

−1)∗

n=2−

n。 然後討論有gc

d(a,

b)==1

,−>g(

ab)=

g(a)

∗g(b

) ,由於已經證明g(

n)為積性函式。

最後只需要求解有

n ,為質數時的g(

nk),就行了。 令h

(n)=

μ(⌊n

d⌋)⌊

nd⌋

則對於h(n

k)而言,只需要計算n1

與n0 ,因為對於na

,a=1

−>μ(

n)=−

1 a=

0−>μ(

n0=1

)=1

a≥2−

>μ(

na)=

0 所以可以得到 g(

na)=

τ(na

)μ(1

)∗1+

τ(na

−1)μ

(n)∗

n g(

na)=

(a+1

)∗1∗

1+a∗

(−1)

∗n g

(na)

=a(1

−p)+

1 具體**放置於另一篇blog(noip數論訓練code)中。

1503171912 ny 一道水題

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 今天lzq在玩一種小遊戲,但是這遊戲數有一點點的大,他乙個人玩的累,想多拉一些人進來幫幫他,你能寫乙個程式幫幫他嗎?這個遊戲是這樣的 有一行數字,如果我們把這行數字中的 5 都看成空格,那麼就得到一行用空格分割的若干非負整數 可...

nyoj525 一道水題

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 今天lzq在玩一種小遊戲,但是這遊戲數有一點點的大,他乙個人玩的累,想多拉一些人進來幫幫他,你能寫乙個程式幫幫他嗎?這個遊戲是這樣的 有一行數字,如果我們把這行數字中的 5 都看成空格,那麼就得到一行用空格分割的若干非負整數 可...

NYOJ 525 一道水題

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 今天lzq在玩一種小遊戲,但是這遊戲數有一點點的大,他乙個人玩的累,想多拉一些人進來幫幫他,你能寫乙個程式幫幫他嗎?這個遊戲是這樣的 有一行數字,如果我們把這行數字中的 5 都看成空格,那麼就得到一行用空格分割的若干非負整數 可...