就以這道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 都看成空格,那麼就得到一行用空格分割的若干非負整數 可...