1. 程式人生 > >「學習筆記」數論函數

「學習筆記」數論函數

以及 display max 很多 chl 51nod ble 成了 time

註:此博客寫於 2017.12

Warn:此博文有超過近10處錯誤,請結合上下文辨別

前置技能

定義

數論函數。 定義域為正整數的函數。以下默認所有數都是正整數。

積性函數。 對於所有 \(\gcd (a,b) = 1\)\(f(ab) = f(a)f(b)\)一定會滿足 \(f(1) = 1\)

完全積性函數。 對於 任意\(a,b\)\(f(ab) = f(a)f(b)\)

在實際應用中,用到的大多都是 積性函數

積性函數的性質

積性。\(f,g\) 為積性函數, 那麽 \((fg)(n) = f(n)g(n), (\frac f g)(n) = \frac {f(n)} {g(n)}\)

也都是積性函數。

用線性篩求 \([1,n]\) 的積性函數。\(n = \prod p _ {i} ^ {k_ i}\) ,那麽 \(f(n) = \prod f(p _ {i} ^ {k_ i})\)

所以在線性篩的時候,有一種方法就是 計算所有 \(f(p_i) ^{k_i}\) 再相乘

另一種方法是,考慮增加一個最小質因子後的變化。

常見的積性函數及其性質

歐拉函數,積性。 \(\varphi(n) = \sum _ {i=1} ^n [\gcd(n,i)=1]\) 表示 \([1,n]\) 中與 \(n\) 互質的數的個數。

直接根據歐拉函數的定義就可以得到一些有用的式子。比如:(註意利用 \(\gcd(n,i) = \gcd(n,n-i)\)

,以及 \(n=1\) 時少算了一次 )

\[\sum _ {i=1} ^ n i \cdot [\gcd(n,i)=1] = \frac 1 2 \times (n \cdot \sum _ {i=1} ^{n} [\gcd(n,i)=1] + [n=1]) = \frac {n \cdot \varphi(n) + [n=1]} 2 \tag 1\]

\[\sum _ {i=1} ^ n \sum _ {j=1} ^ n [\gcd (i, j) = 1] =2 \sum _ {i=1} ^n \varphi(i) - 1 \tag {2}\]

莫比烏斯函數,積性。\(n\) 含有平方因子 \(\mu(n) = 0\)

, 否則 \(n\)\(k\) 個不同的質因子乘積, \(\mu(n) = -1 ^{k}\)

除數函數,積性。 \(\sigma _ {k} (n)\) 表示 \(n\) 的所有因數的 \(k\) 次冪之和。

特別的,\(d(n) = \sigma _ {0} (n)\) ,表示 \(n\) 的因數個數。

\(\sigma _ {1} (n) = \sigma (n)\) ,表示 \(n\) 的所有因數之和。

這個角標在上在下都是等價的!

冪函數,完全積性。 \(id _ {k} (n)\) ,表示 \(n^k\)

特別的, \(id _ {0} (n) = 1 (n) = 1\)

單位函數,完全積性。 當且僅當 \(n=1\) 時, \(e(n)=1\) ,否則 \(e(n)=0\)

Dirichlet卷積

定義

兩個數論函數 \(f,g\) 的Dirichlet卷積。

\[\large (f \ast g)(n) = \sum _ {d|n} f(d) \times g(\frac n d) \tag{3}\]

性質

定義。 \((f+n)(n) = f(n) + g(n)\) .

交換律。 \(f \ast g = g \ast f\)

結合律。 \((f \ast g) * h = f \ast (g \ast h)\)

分配率。 \(f \ast (g + h) = f \ast g + f \ast h\)

單位元。 \(f \ast e = f\)

\(f,g\) 為積性函數時, \(f \ast g\) 也為積性函數。

如果有一個積性函數 \(f\) ,則一定存在 \(g*f=e\)\(g\) 就是 \(f\)Dirichlet逆,也是積性函數。

已知數論函數 \(f,g\) ,則可以枚舉倍數,在 \(O(n \log n)\) 的時間內計算出 \(f \ast g\)

常見的Dirichlet卷積

一個函數的約數和可以卷上1。

\[d(n) = \sum _ {d|n} 1 \Rightarrow d = 1 \ast 1 \tag{4}\]

\[\sigma (n) = \sum _ {d|n} d \Rightarrow \sigma = d \ast 1 \tag{5}\]

極其重要的,莫比烏斯反演的基礎

\[\large \sum _ {d|n} \mu(d) = \sum _ {i=0} ^{k} (-1) ^{i} \times \binom k i = (1-1) ^{k} = e(n) \Longrightarrow e = \mu * 1 \tag{6}\]

另一個常用的卷積。 因為 \(\varphi(d)\) 表示與 \(n\) 的最大公約數為 \(\frac n d\) 的數的個數,它們的和顯然為 \(n\)

\[\large \sum _ {d|n} \varphi (d) = n \Longrightarrow \varphi \ast 1 = id \tag{7}\]

莫比烏斯反演

形式一:因數反演

如果兩個數論函數 \(f,g\) 滿足 \(f = g \ast 1\) ,也即

\[\large f(n) = \sum _ {d|n} g(d) \tag{8}\]

那麽它們滿足 \(g = \mu * f\) ,也即

\[\large g(n) = \sum _ {d|n} \mu (d) \times f(\frac n d) \tag {9}\]

考慮證明 \(f = g \ast 1 \Leftrightarrow g = \mu \ast f\)

已知

\[\large f = g \ast 1\]

兩邊都卷上 \(\mu\) ,可得

\[\large f \ast \mu = g \ast \mu \ast 1 = g \ast e = g\]

已知

\[\large f \ast \mu = g\]

兩邊都卷上 \(1\) ,可得

\[\large g \ast 1 = f \ast \mu \ast 1 = f \ast e = f\]

本質? \(1\)\(\mu\) 在 Dirichlet卷積意義下互為逆元。

形式二:倍數反演

這就不是Dirichlet卷積了,不過也是對的。

\[\large g(n) = \sum _ {n|d} f(d) \Longrightarrow f(n) \sum _ {n|d} \mu( \frac d n) g(d) \tag {10}\]

變換技巧

一些基本套路,多推推就熟練了。

1.枚舉 \(\gcd\) 取值

2.交換枚舉倍數與約數

3.用莫比烏斯函數求和替換

4.改寫求和指標

5.得到一個整除分塊的形式,處理一個函數的前綴和

最重要的還是保持恒等,利用 兩種貢獻 的思想。

有一個 積性函數 \(f\),它與恒等函數 \(1\) 的Dirichlet卷積 \(g = f*1\) 如何計算?

假設 \(n = \prod _ {i=1} ^{t} p _ {i} ^{ki}\)\(g(n) = \sum _ {d|n} f(n)\) 。那麽就有

\[\large g(n) = \prod _ {i=1} ^{t} \sum _ {j=0} ^{ki} f(p _ {i} ^{j}) \tag{11}\]

整數分塊技巧。\(\sum _ {i=1} ^{n} f(i) \times \lfloor \frac n i \rfloor\)

註意到 \(\large \lfloor \frac n i \rfloor\) 只有 \(O(\sqrt n)\) 種取值。對於固定的 \(\lfloor \frac n i \rfloor\)\(i\) 的取值為

\[\large \left[ \left \lfloor \frac n {\lfloor \frac n i \rfloor+1} \right \rfloor+1, \left \lfloor \frac n {\lfloor \frac n i \rfloor} \right \rfloor \right] \tag{12}\]

對於相同的 \(\lfloor \frac n i \rfloor\) ,我們只需要計算 \(f(i)\) 的前綴和 即可。復雜度即是 \(O(\sqrt n)\)

同時有 \(n,m\) 時同理。

假設 \(a \ast b\) 已經是Dirichlet卷積,那麽

\[\large id _ {k} \times (a \ast b) = (id _ {k} \times a) \ast (id _ {k} \times b) \tag{13}\]

再根據常用卷積 \(id = \varphi \ast 1\) ,發現 \(\varphi\) 是連接兩個相鄰 \(id\) 的橋梁,即

\[\large (\varphi \times id _ {k}) \ast id _ {k} = id _ {k+1} \tag{14}\]

可以由兩個常用卷積推出,

\[\large \varphi (n) = \sum _ {d|n} \mu (d) \times \frac n d \Longrightarrow \varphi = \mu \ast id \tag{15}\]

常見變換方式:約數與倍數的互換。

對於 \(d,e,D=d \times e\) 三項貢獻的這種,可以枚舉 \(D\) 將其化為狄利克雷卷積,也可以枚舉 \(d\)\(e\) 化成帶下取整的式子;一般來講前者往往易於預處理,可以應付多組詢問,後者則在單次詢問中有優秀表現。

最最最容易碰到的莫比烏斯套路。以後就直接作為結論 了:

現在有一個奇怪的函數 \(f(n)\) ,不妨設 \(n \leq m\) ,那麽,

\[\large { \sum _ {i=1} ^ n \sum _ {j=1} ^ m f(\gcd(i,j)) \\ = \sum _ {d=1} ^ n f(d) \sum _ {i=1} ^ {\lfloor \frac n d \rfloor} \sum _ {j=1} ^ {\lfloor \frac m d \rfloor } [\gcd(i,j)=1] \\ = \sum _ {d=1} ^ n f(d) \sum _ {i=1} ^ {\lfloor \frac n d \rfloor} \sum _ {j=1} ^ {\lfloor \frac m d \rfloor } \sum _ {p|i,p|j} \mu(p) \\ = \sum _ {d=1} ^ n f(d) \sum _ {p=1} ^ {\lfloor \frac n d \rfloor} \mu(p) \cdot \lfloor \frac n {pd} \rfloor \cdot \lfloor \frac m {pd} \rfloor \\ = \sum _ {D=1} ^ n \sum _ {d|D} f(d) \cdot \mu(\frac D d) \cdot \lfloor \frac n D \rfloor \cdot \lfloor \frac m D \rfloor \tag{16}}\]

就變成要求 \(f \ast \mu\) 的前綴和了,再套用分塊即可。

杜教篩

問題的一般形式

給出一個奇怪的數論函數 \(f(x)\) (simple一點像 \(\mu, \varphi\) )。接著給出了一個 \(n\) ,一般有 \(10^{10}\) 的範圍。需要求 \(S(n) = \sum _ {i=1} ^{n} f(i)\) 模一個大數的值。

構造

求出 \(S(n)\) 會非常困難,考慮找出另一個函數 \(g(x)\) ,考慮 \((f*g)(x)\) 的前綴和。

\[\large \sum _ {i=1} ^{n} \sum _ {j|i} f(i) g(\frac i j) = \sum _ {ij \leq n} f(i) g(j) = \sum _ {i=1} ^{n} g(i) S(\lfloor \frac n i \rfloor) \]

於是,

\[\large g(1)S(n) = \sum _ {i=1} ^{n} (f*g)(i) - \sum _ {i=2} ^{n} g(i) S(\lfloor \frac n i \rfloor)\]

要求&&時間復雜度&&Trick

需要保證 \((f*g)(x),g(x)\) 的前綴和都比較容易計算。

可以直接記憶化搜索,復雜度 \(O(n^{\frac 3 4})\)

可以預處理前 \(k\) 個前綴和,復雜度 \(O(k + \frac n {\sqrt k})\) 。取 \(k=n^{\frac 2 3}\) 最優,復雜度 \(O(n ^ {\frac 2 3})\)

對於 \(\mu(x),\varphi(x)\) 的前綴和,我們令 \(g(x) = 1\) 即可。

特別重要的!

一個性質: \(\large \left \lfloor \frac n {ab} \right \rfloor = \left \lfloor \frac {\left \lfloor \frac n a \right \rfloor} b \right \rfloor\)

因為 \(\frac n {n ^ {\frac 2 3}} \leq n ^ {\frac 1 3}\) ,根據上述性質,杜教篩在篩的過程中,會被計算的 \(s(x)\) 只有 \(O(n ^ {\frac 1 3})\) 個。

這個東西用於時間復雜度計算很有用!所以像分塊套杜教篩啊,杜教篩套分塊啊,復雜度都是對的!(只要都是不斷整除 \(n\)

還有一個 Trick ,我們不是要 HASH 嗎,但是那個太慢了。

\(S(x)\) 直接存到 \(f[n/x]\) 裏就好了( \(n\) 是全局的)

復雜的基本形式

%%%jiry_2

有時候, \(f(x)\) 本身就是兩個函數的積/Dirichlet卷積,通常令 \(g(x) = 1\) ,可以進一步化簡。

推柿子啦啦啦

來看一些有意思的題目。順便.....

BZOJ3560 DZY Loves Math V\(\sum _ {i_1|a_1} \sum _ {i_2|a_2} ... \sum _ {i_n|a_n}\)

歐拉函數的性質。 考慮統計每一個質因子出現的次數,再相乘即可。註意 \(p^0=1\) 要特殊考慮。

空間開不下?註意到一個 \(ai\) 最多只會存在一個 \(p > \sqrt {a_{max}}\)

51Nod1675 序列變換 給定序列 \(a,b\) ,求存在多少對 \(x,y\) 滿足 \(\gcd(x,y)=1,a_{b_x}=b_{a_x}\)

莫比烏斯反演的第二形式。 定義 \(f(k)\)\(gcd(x,y)=k\) 的個數,定義 \(F(k)\)\(k|\gcd(x,y)\) 的個數。顯然 \(F(k)\) 很容易求,於是用 \((10)\) 就好了。

BZOJ3561 DZY Loves Math VI\(\sum _ {i=1} ^ n \sum _ {j=1} ^ m lcm (i,j) ^ {\gcd(i, j)}\)

莫比烏斯反演,暴力。 雖然不是 \((16)\) 的形式,也可以用類似的套路,反演得到:

\[\sum _ {d = 1} ^ {n} d ^ d \cdot \sum _ {p = 1} ^ {\lfloor \frac n d \rfloor} \mu(p) \cdot p ^ {2d} \cdot \sum _ {i=1} ^ {\lfloor \frac m {pd} \rfloor} i ^ d \cdot \sum _ {j=1} ^ {\lfloor \frac n {pd} \rfloor } j ^ d\]

這個東西直接暴力嘛。。

BZOJ4816 [SDOI2017]數字表格\(\prod _ {i=1} ^ n \prod _ {j=1} ^ m fib(gcd(i,j))\) ,其中 \(fib(n)\) 是斐波那契數。

莫比烏斯反演,前綴積。 同樣也是 \((16)\) 的套路,只不過到了指數上面。同時前綴和變成了前綴積,同樣也是 \(O(n \log n)\) 暴力預處理。

BZOJ3529 [SDOI2014]數表\(\sum _ {i=1} ^ n \sum _ {j=1} ^ m \sigma _ 1(\gcd(i,j)) \cdot [\sigma_1(\gcd(i,j)) \leq a]\) 。多組詢問。

莫比烏斯反演,離線。 哈哈哈,又是 \((16)\) 的套路。。於是就是要求:

\[\large \sum _ {d|D} \sigma_1 (d) \cdot \mu(\frac D d)\]

的前綴和。

然後這個 \(a\) 的限制似乎有些難搞?註意到有多組數據,所以可以離線,按照 \(a\) 排序。修改和求前綴和就交給樹狀數組了。

復雜度? \(O(n \log ^2 n + T \cdot \sqrt n \cdot \log n)\)

BZOJ4407 於神之怒加強版\(\sum _ {i=1} ^ n \sum _ {j=1} ^ m \gcd(i,j) ^ k\)

莫比烏斯反演,積性函數前綴和。 又是 \((16)\) 的套路(這句話說了多少遍了)。就是要求:

\[\sum _ {d|D} d ^ k \cdot \mu (\frac D d)\]

的前綴和。

然後這個是積性函數的狄利克雷卷積,可以線性篩。往往就需要利用 \(\mu\) ,可以直接分情況。或者推公式,展開 \(g(D)\) (這個方法比較萬能):

\[\large {g(n) \\ = \sum _ {d|n} d ^ k \mu(\frac n d) \\ = \prod _ {p_i} g(p_i ^{x_i}) \\ = \prod _{p_i} (p_i ^{kx_i} \cdot \mu(1) + p_i ^{k(x_i-1)} \cdot \mu(p_i)) \\ = \prod _ {p_i} p_i ^ {k(x_i-1)} \cdot (p_i ^k -1)}\]

BZOJ3994 [SDOI2015]約數個數和\(\sum _{i=1} ^n \sum _{j=1} ^m \sigma_0(i,j)\)

莫比烏斯反演,\(\sigma_0\) 的性質。 這題需要利用 \(\sigma_0\) 的性質:

\[\large \sigma_0 (n,m) = \sum _ {i|n} \sum _ {j|m} [\gcd(i,j)=1]\]

證明:考慮一個質因子 \(p\) ,假設 \(n\) 中有 \(x\) 個,\(m\) 中有 \(y\) 個。那麽根據約數個數定理,\(\sigma_0(n,m) = \prod (x+y-1)\)。而如果要使 \(\gcd(i,j)=1\) ,每個質因子同樣有 \(x+y-1\) 種取法(\(x\)\(y\)\(0\) )。恰好是約數定理的形式。

接下來就是套路變換啦。

BZOJ3309 DZY Loves Math 對於正整數 \(n\),定義 \(f(n)\)\(n\) 所含質因子的最大冪指數。例如 \(f(1960)=f(2^3 \times 5^1 \times 7^2)=3, f(10007)=1, f(1)=0\) 。給定正整數 \(a,b\) ,求 \(\sum _ {i=1} ^a \sum _ {j=1} ^m f( \gcd(i,j))\)

莫比烏斯反演,特殊性質函數的前綴和。 根據 \((16)\) ,我們只需要求 \(g(D) = \sum _ {d|D} f(d) \mu ( \frac D d )\) 的前綴和即可。

但是,發現這個 \(f(d)\) 不是積性函數,似乎就無法線性篩了。於是就要利用 \(\mu(n)\) 的特殊性質。

\(D\) 表示為質因數乘積的形式,如果 \(\frac D d\)\(g(D)\) 有貢獻,每個質因子的次數不會超過 \(1\) 如果一個質因子 \(p\)\(\frac D d\) 中,我們稱選擇 \(p\)

引理:對於一個包含 \(n\ (1 \leq n)\) 個元素的集合,選擇奇數個元素的方案數的等於選擇偶數個元素的方案數。

歸納法很容易證明。

我們知道,\(\mu(D) = (-1) ^ k\) ,其中 \(k\) 是選擇的個數。

接下來分三種情況:(設所有質因子中,最大的次數為 \(a\)

\(D = p^a\)\(g(p^a) = f(p^a) - f(p^{a-1}) = a - (a - 1) = 1\)

\(D = p_1 ^{a_1} p_2 ^{a_2} ... p_m^{a_m}\) ,且 滿足 \(a_1 = a_2 = ... = a_m\),假設最大次數 \(a\)\(b\) 個。考慮 \(a-1\) 的貢獻,此時最大次數的質因子都被選擇,剩下的 \(1 \leq m-b\) 個數可以任意選擇,根據引理,正負全都被抵消了。考慮 \(a\) 的貢獻,由於 所有數中選擇奇數與偶數個的方案,\(a-1\) 時選擇奇數與偶數個數的方案都相等 ,同樣會正負都抵消。此時 \(g(D) = 0\)

\(D = p_1 ^{a_1} p_2 ^{a_2} ... p_m^{a_m}\) ,且有 \(a_1 = a_2 = ... = a_m = a\)。如果全部選擇, \(f(d) = a-1\) ,對 \(g(D)\) 的貢獻為 \((a-1) \times (-1)^m\) ;而其他情況下, \(f(d)=a\),對 \(g(D)\) 的貢獻為 \(a \times (-1) ^ {m-1}\) 。此時 \(g(D) = -(-1)^m\)

為什麽第三種情況套單獨考慮? 因為此時 \(m-b=0\) ,不滿足引理的條件,需要單獨考慮。

同時也可以發現, 第一種情況沒必要特殊考慮,同第三種情況。

最後,這個東西也是可以線性篩的。 利用 每個數只會被最小的質因子篩\(a[]\) 記錄每一個數最小質因子的次數,\(b[]\) 記錄最小質因子的 \(a[]\) 次,就可以遞推了。

BZOJ3512 DZY Loves Math IV\(\sum _ {i = 1} ^ n \sum _ {j = 1} ^ m \varphi (ij)\)\(n \leq 10^5, m \leq 10^9\)

歐拉函數的性質,莫比烏斯反演,杜教篩。 大爺的姿勢。

\(S(n,m) = \sum _ {i=1} ^ m \varphi (ni)\)

\[\large { S(n,m) \\ = \sum _ {i=1} ^ m \varphi (ni) \\ = \sum _ {i=1} ^ m \varphi ( \frac n {\gcd(i,n)}) \cdot \varphi(i) \cdot \gcd(i,n) \\ = \sum _ {i=1} ^ m \varphi(\frac n {\gcd(i,n)}) \cdot \varphi(i) \cdot \sum _ {d|i,d|n} \varphi(d) \\ = \sum _ {i=1} ^ m \varphi(i) \cdot \sum _ {d|i,d|n} \varphi(\frac n d) \\ = \sum _ {d|n} \varphi(\frac n d ) \cdot \sum _ {i=1} ^ {\lfloor \frac m d \rfloor } \varphi(di) \\ = \sum _ {d | n} \varphi(\frac n d) \cdot S(d, \lfloor \frac m d \rfloor )}\]

第二步,由於 \(n,i\) 不一定互質,所以單獨提出了 \(\gcd\) ;第三步,巧妙地運用了 \((7)\) ;第四步,由於 \(\frac n {\gcd(i,n)},d\) 互質,所以可以直接合並;第五步應該及其套路。

\(n=1\) 時,需要大力杜教篩搞一搞。

嘛..

這個復雜度不會爆炸?

註意到,需要計算的 \(S(n‘,m‘)\) ,一定滿足 \(m‘ = \lfloor \frac m {n‘} \rfloor\)(除了第一個),所以要計算的就很少啦。復雜度差不多是 \(O((n ^ {\frac 2 3} + m ^ {\frac 3 2}) \times HASH)\)

還要HASH一下,同時,根據 \(\varphi\) 的性質,可以先把 \(n\) 中額外的質因子搞出來。

UPD 註意,第四步的推導是錯誤的,必須要滿足 \(|\mu(n)|=1\) ,這樣才能保證互質(因為每個質因子都只有一個,只能存在於 \(\frac n {\gcd(i,n)}\) 或者 \(\gcd(i,n)\) )。所以搞出額外的質因子是必須的。

51Nod1238 最小公倍數之和 \(\sum _ {i=1} ^{n} \sum _ {j=1} ^{n} lcm(i,j)\)

只是杜教篩。

兩維的嘛..要先拆開來啦..

\[\large {f(n) \\ = \sum _ {i=1} ^{n} lcm(n,i)\\ = n \times \sum _ {i=1} ^{n} \frac i {\gcd (i, n)}\\ = n \times \sum _ {d|n} ^{n} \sum _ {id \leq n} i \times e(\gcd (i, \frac n d))\\ = n \times \sum _ {d|n} ^{n} \frac 1 2 \times (e(d) + d \times \varphi(d))\\ = \frac n 2 + \frac 1 2 \times n \times \sum _ {d|n} d \times \varphi(d)\\ }\]

最主要是搞出 \(S(n) = \sum _ {i=1} ^n i \times \sum _ {d|i} d \times \varphi(d)\) 也就是 \(id \times [(id \times \varphi) \ast 1] = (id _ 2 \times \varphi) \ast id\) 的前綴和。考慮如何消去難以計算的 \(\varphi\)

我們需要卷上一個新的東西。考慮利用 \((7)\) 來消去。考慮卷上 \(id _ 2\) 來提出括號中的 \(id _ 2\) ,於是

\[\large id _ 2 \ast (id _ 2 \times \varphi) \ast id = id _ 2 \times (1 * \varphi) \ast id = id _ 3 \ast id\]

這個前綴和就比較好求辣。令 \(h(i)\) 表示這個柿子的前綴和,於是(考慮展開後每個 \(d\) 的貢獻次數)

\[\large h(n) = \sum _ {d=1} ^{n} d \sum _ {id \leq n} i ^ 3\]

註意到不同 \(i\) 的上限只有 \(O(\sqrt n)\) 個,所以這個前綴和也可以分塊!\(g(x) = id _ 2\) 的前綴和也很容易計算。由於把 \(S\) 劃分為 \(O(\sqrt n)\) 個子問題時也需要 \(O(\sqrt n)\) 的時間復雜度,所以總的復雜度不變。仍然為 \(O(n ^ {\frac 2 3})\)

發現很神奇的, \(ANS = s(n)\)

另一種方法。 得到 \(S(n) = \sum _ {i=1} ^n i \times \sum _ {d|i} d \times \varphi(d)\) 後,可以改變形式使得更容易篩。改為枚舉 \(i\)\(d\) 的多少倍。

\[\large {S(n) = \sum _ {i=1} ^n i \times \sum _ {d|i} d \times \varphi(d) \\ = \sum _ {i=1} ^ n i \times \sum _ {d=1} ^ {\lfloor \frac n d \rfloor} d ^ 2 \times \varphi (d)}\]

嗯,那麽要求的就是 \(id _ 2 \times \varphi\) 的前綴和,再分塊。卷上 \(id_ 2\) 。要求 \(id_ 3\) 的前綴和。

題外話。 51Nod1227也是同樣的方法,只是一開始得到的為 \((\varphi \times id) \ast 1\)51Nod1237大致方向差不多,只是推的過程簡單很多。

如果用方法二,卷起來得到了 \(id _ 2\) ,十分容易計算!

如果直接卷 \(id\) 得到 \(1 \ast id _ 2\) ,也可以應用方法一,裏面套一層分塊。

似乎兩種方法本質一樣,都需要進行一次約數/倍數變換。分塊在外面或者裏面。

「學習筆記」數論函數