杜教筛和 min_25 筛基础习题
这篇博客记录了自己最近几个月所刷的数论函数题目,所以有些题目可能不需要用到杜教筛或者 min_25
筛。某些题需要一些乱搞的技巧。
感谢 tangjz
提供大量题目。
1. HDU - 5608 function
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5608
1.1 题意
定义:
n
2
−
3
n
+
2
=
∑
d
∣
n
f
(
d
)
n^2-3n+2=\sum_{d|n}f(d)
n2−3n+2=d∣n∑f(d)
求
∑
i
=
1
n
f
(
i
)
m
o
d
1
0
9
+
7
\sum_{i=1}^n f(i) \mod 10^9+7
∑i=1nf(i)mod109+7 的值。
多组读入,共有 T ≤ 500 T \le 500 T≤500 组数据, n ≤ 1 0 9 n \le 10^9 n≤109,其中不超过 5 5 5 组数据满足 n > 1 0 6 n > 10^6 n>106。
1.2 解题过程
我们可以发现, ∑ d ∣ n f ( d ) = f ∗ I \sum_{d|n}f(d)=f*I ∑d∣nf(d)=f∗I,因此对于大于 1 0 6 10^6 106 的部分,可以使用杜教筛来求解,对于小于 1 0 6 10^6 106 的部分,可以暴力预处理出前缀和。
时间复杂度: O ( n log n + n 2 3 ) O(n \log n + n^{\frac{2}{3}}) O(nlogn+n32)
2. 51Nod - 1238 最小公倍数之和 V3
题目链接:http://www.51nod.com/Challenge/Problem.html#problemid=1238
2.1 题意
给定
n
(
2
≤
n
≤
1
0
10
)
n(2 \le n \le 10^{10})
n(2≤n≤1010),求
∑
i
=
1
n
∑
j
=
1
n
lcm
(
i
,
j
)
m
o
d
1
0
9
+
7
\sum_{i=1}^n \sum_{j=1}^n \text{lcm}(i,j) \mod 10^9+7
i=1∑nj=1∑nlcm(i,j)mod109+7
的值。
2.2 解题过程
∑ i = 1 n ∑ j = 1 n lcm ( i , j ) = ∑ k = 1 n k ∑ d = 1 ⌊ n k ⌋ μ ( d ) ⋅ d 2 ⌊ n k d ⌋ 2 , l = k d = ∑ l = 1 n ⌊ n l ⌋ 2 ∑ d ∣ l μ ( d ) ⋅ d 2 ⋅ l d \begin{aligned} \sum_{i=1}^n \sum_{j=1}^n \text{lcm}(i,j)&=\sum_{k=1}^n k \sum_{d=1}^{\lfloor \frac{n}{k} \rfloor} \mu(d) \cdot d^2 \lfloor \frac{n}{kd} \rfloor^2,l=kd \\ &=\sum_{l=1}^n \lfloor \frac{n}{l} \rfloor^2 \sum_{d|l} \mu(d) \cdot d^2 \cdot \frac{l}{d} \end{aligned} i=1∑nj=1∑nlcm(i,j)=k=1∑nkd=1∑⌊kn⌋μ(d)⋅d2⌊kdn⌋2,l=kd=l=1∑n⌊ln⌋2d∣l∑μ(d)⋅d2⋅dl
设
f
(
l
)
=
∑
d
∣
l
μ
(
d
)
⋅
d
2
⋅
l
d
f(l)=\sum_{d|l} \mu(d) \cdot d^2 \cdot \frac{l}{d}
f(l)=∑d∣lμ(d)⋅d2⋅dl,则
f
=
(
μ
⋅
i
d
2
)
∗
i
d
f=(\mu \cdot id^2) * id
f=(μ⋅id2)∗id,我们对
f
f
f 卷上一个
i
d
2
id^2
id2,根据狄利克雷卷积的可交换性,可以得到
f
∗
i
d
2
=
(
μ
⋅
i
d
2
)
∗
i
d
2
∗
i
d
=
(
∑
d
∣
l
μ
(
d
)
⋅
d
2
⋅
l
2
d
2
)
∗
i
d
=
ϵ
∗
i
d
=
i
d
\begin{aligned} f * id^2&=(\mu \cdot id^2) * id^2 * id \\ &=(\sum_{d|l}\mu(d) \cdot d^2 \cdot \frac{l^2}{d^2})*id \\ &=\epsilon*id \\ &=id \end{aligned}
f∗id2=(μ⋅id2)∗id2∗id=(d∣l∑μ(d)⋅d2⋅d2l2)∗id=ϵ∗id=id
因此当
n
≤
1670000
n \le 1670000
n≤1670000 时,使用线性筛预处理出
f
f
f 的前缀和,否则需要利用杜教筛计算
f
f
f 的前缀和,最后套一个数论分块即可解决本题。
需要注意的是,杜教筛外面套一个数论分块不影响总体的时间复杂度。
时间复杂度: O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)。
3. 51Nod - 1227 平均最小公倍数
题目链接:http://www.51nod.com/Challenge/Problem.html#problemid=1227
3.1 题意
定义:
A
(
n
)
=
∑
i
=
1
n
lcm
(
n
,
i
)
n
A(n)=\frac{\sum_{i=1}^n \text{lcm}(n,i)}{n}
A(n)=n∑i=1nlcm(n,i)
,给定
a
a
a 和
b
(
1
≤
a
≤
b
≤
1
0
9
)
b(1 \le a \le b \le 10^9)
b(1≤a≤b≤109),求
∑
i
=
a
b
A
(
i
)
m
o
d
1
0
9
+
7
\sum_{i=a}^bA(i) \mod 10^9+7
i=a∑bA(i)mod109+7
的值。
3.2 解题过程
A ( n ) = ∑ i = 1 n lcm ( n , i ) n = ∑ i = 1 n n i n ⋅ gcd ( i , n ) = ∑ i = 1 n i gcd ( i , n ) = ∑ k = 1 n ∑ i = 1 n i k [ gcd ( i , n ) = k ] = ∑ k ∣ n ∑ i = 1 n k i [ gcd ( n k , i ) = 1 ] = ∑ k ∣ n n k ⋅ φ ( n k ) + [ n k = 1 ] 2 = ( ∑ k ∣ n φ ( k ) ⋅ k ) + 1 2 \begin{aligned} A(n)&=\sum_{i=1}^n \frac{\text{lcm}(n,i)}{n}\\ &=\sum_{i=1}^n \frac{ni}{n\cdot \gcd(i,n)}\\ &=\sum_{i=1}^n \frac{i}{\gcd(i,n)}\\ &=\sum_{k=1}^n\sum_{i=1}^n \frac{i}{k}[\gcd(i,n)=k]\\ &=\sum_{k|n}\sum_{i=1}^{\frac{n}{k}}i[\gcd(\frac{n}{k},i)=1]\\ &=\sum_{k|n}\frac{\frac{n}{k}\cdot\varphi(\frac{n}{k})+[\frac{n}{k}=1]}{2}\\ &=\frac{(\sum_{k|n}\varphi(k)\cdot k)+1}{2} \end{aligned} A(n)=i=1∑nnlcm(n,i)=i=1∑nn⋅gcd(i,n)ni=i=1∑ngcd(i,n)i=k=1∑ni=1∑nki[gcd(i,n)=k]=k∣n∑i=1∑kni[gcd(kn,i)=1]=k∣n∑2kn⋅φ(kn)+[kn=1]=2(∑k∣nφ(k)⋅k)+1
设 f ( n ) = ∑ k ∣ n φ ( k ) ⋅ k f(n)=\sum_{k|n}\varphi(k)\cdot k f(n)=∑k∣nφ(k)⋅k,则 n ≤ 1 0 6 n \le 10^6 n≤106 时,可以通过线性筛预处理出前缀和;
n > 1 0 6 n > 10^6 n>106 时,我们需要通过狄利克雷卷积 + 杜教筛处理出其前缀和。
可以发现,
f
=
(
φ
⋅
i
d
)
∗
I
f=(\varphi \cdot id) * I
f=(φ⋅id)∗I,我们尝试将
f
f
f 卷上
i
d
id
id,则可以得到
f
∗
i
d
=
(
φ
⋅
i
d
)
∗
I
∗
i
d
=
(
φ
⋅
i
d
)
∗
i
d
∗
I
=
i
d
2
∗
I
=
∑
d
∣
n
d
2
\begin{aligned} f*id&=(\varphi\cdot id)*I*id\\ &=(\varphi\cdot id)*id*I\\ &=id^2 * I\\ &=\sum_{d|n}d^2 \end{aligned}
f∗id=(φ⋅id)∗I∗id=(φ⋅id)∗id∗I=id2∗I=d∣n∑d2
根据杜教筛的时间复杂度,我们最多在
O
(
n
)
O(\sqrt n)
O(n) 以内的时间复杂度内求出
f
∗
i
d
f*id
f∗id 的前缀和:
∑
i
=
1
n
(
f
∗
i
d
)
(
i
)
=
∑
i
=
1
n
∑
d
∣
i
d
2
=
∑
d
=
1
n
d
2
∑
i
=
1
⌊
n
d
⌋
1
=
∑
d
=
1
n
d
2
⌊
n
d
⌋
\begin{aligned} \sum_{i=1}^n (f*id)(i)&=\sum_{i=1}^n\sum_{d|i}d^2\\ &=\sum_{d=1}^n d^2\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} 1\\ &=\sum_{d=1}^n d^2 \lfloor \frac{n}{d} \rfloor \end{aligned}
i=1∑n(f∗id)(i)=i=1∑nd∣i∑d2=d=1∑nd2i=1∑⌊dn⌋1=d=1∑nd2⌊dn⌋
,至此,我们便可通过杜教筛求出
f
∗
i
d
f*id
f∗id 后面项的前缀和,时间复杂度为
O
(
n
2
3
)
O(n^\frac{2}{3})
O(n32)。
4. 51Nod - 1222 最小公倍数计数
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1222
4.1 题意
定义
f
(
n
)
f(n)
f(n) 为最小公倍数为
n
n
n 的二元组数量,给定
a
,
b
(
1
≤
a
≤
b
≤
1
0
11
)
a,b(1 \le a \le b \le 10^{11})
a,b(1≤a≤b≤1011),求
∑
i
=
a
b
f
(
i
)
\sum_{i=a}^b f(i)
i=a∑bf(i)
的值。
4.2 解题过程
我们只需考虑
F
(
n
)
=
∑
i
=
1
n
f
(
i
)
F(n)=\sum_{i=1}^n f(i)
F(n)=∑i=1nf(i) 如何求出,即可通过
F
(
b
)
−
F
(
a
−
1
)
F(b)-F(a-1)
F(b)−F(a−1) 求出答案。
∑
i
=
1
n
f
(
i
)
=
∑
i
=
1
n
∑
j
=
1
n
[
lcm
(
i
,
j
)
≤
n
]
=
∑
i
=
1
n
∑
j
=
1
n
[
i
j
gcd
(
i
,
j
)
≤
n
]
=
∑
k
=
1
n
∑
i
=
1
n
∑
j
=
1
n
[
i
j
k
≤
n
]
[
gcd
(
i
,
j
)
=
k
]
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
[
i
j
k
≤
n
]
[
gcd
(
i
,
j
)
=
1
]
=
∑
k
=
1
n
∑
d
=
1
⌊
n
k
⌋
μ
(
d
)
∑
i
=
1
⌊
n
k
d
⌋
∑
j
=
1
⌊
n
k
d
⌋
[
i
j
k
≤
⌊
n
d
2
⌋
]
=
∑
d
=
1
n
μ
(
d
)
∑
k
=
1
⌊
n
d
2
⌋
∑
i
=
1
⌊
n
k
d
2
⌋
∑
j
=
1
⌊
n
i
k
d
2
⌋
[
i
j
k
≤
⌊
n
d
2
⌋
]
\begin{aligned} \sum_{i=1}^n f(i) &= \sum_{i=1}^n \sum_{j=1}^n [\text{lcm}(i,j) \le n]\\ &= \sum_{i=1}^n \sum_{j=1}^n [\frac{ij}{\gcd(i,j)} \le n]\\ &= \sum_{k=1}^n \sum_{i=1}^n \sum_{j=1}^n [\frac{ij}{k}\le n][\gcd(i,j)=k]\\ &= \sum_{k=1}^n \sum_{i=1}^{\lfloor \frac{n}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{k} \rfloor} [ijk\le n][\gcd(i,j)=1]\\ &= \sum_{k=1}^{n} \sum_{d=1}^{\lfloor \frac{n}{k} \rfloor} \mu(d) \sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{kd} \rfloor} [ijk \le \lfloor \frac{n}{d^2} \rfloor]\\ &= \sum_{d=1}^{\sqrt n} \mu(d) \sum_{k=1}^{\lfloor \frac{n}{d^2} \rfloor} \sum_{i=1}^{\lfloor \frac{n}{kd^2} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{ikd^2} \rfloor} [ijk \le \lfloor \frac{n}{d^2} \rfloor] \end{aligned}
i=1∑nf(i)=i=1∑nj=1∑n[lcm(i,j)≤n]=i=1∑nj=1∑n[gcd(i,j)ij≤n]=k=1∑ni=1∑nj=1∑n[kij≤n][gcd(i,j)=k]=k=1∑ni=1∑⌊kn⌋j=1∑⌊kn⌋[ijk≤n][gcd(i,j)=1]=k=1∑nd=1∑⌊kn⌋μ(d)i=1∑⌊kdn⌋j=1∑⌊kdn⌋[ijk≤⌊d2n⌋]=d=1∑nμ(d)k=1∑⌊d2n⌋i=1∑⌊kd2n⌋j=1∑⌊ikd2n⌋[ijk≤⌊d2n⌋]
设
g
(
n
)
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
i
k
⌋
[
i
j
k
≤
n
]
g(n)=\sum_{k=1}^{n} \sum_{i=1}^{\lfloor \frac{n}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{ik} \rfloor} [ijk \le n]
g(n)=∑k=1n∑i=1⌊kn⌋∑j=1⌊ikn⌋[ijk≤n],则我们可以通过枚举
k
,
i
,
j
k,i,j
k,i,j 来在
T
1
(
n
)
=
O
(
∑
i
=
1
n
1
3
(
n
i
−
i
)
)
=
O
(
n
2
3
)
T_1(n)=O(\sum_{i=1}^{n^{\frac{1}{3}}}(\sqrt{\frac{n}{i}}-i))=O(n^{\frac{2}{3}})
T1(n)=O(∑i=1n31(in−i))=O(n32) 的时间复杂度内求出
g
(
n
)
g(n)
g(n)。枚举时,假设
k
≤
i
≤
j
k \le i \le j
k≤i≤j,其中
k
k
k 在
[
1
,
n
1
3
]
[1,{n}^{\frac{1}{3}}]
[1,n31] 范围内枚举,
i
i
i 在
[
k
,
⌊
n
k
⌋
]
[k,\sqrt{\lfloor \frac{n}{k} \rfloor}]
[k,⌊kn⌋] 范围内枚举,在
k
k
k 和
i
i
i 确定的情况下,
j
j
j 的取值范围可以
O
(
1
)
O(1)
O(1) 得出,枚举之后更新答案即可。
求解 g ( n ) g(n) g(n) 的代码如下:
ll calc(ll n) {
ll res = 0;
for (ll a = 1; a * a * a <= n; a++) {
for (ll b = a; a * b * b <= n; b++) {
ll c = n / (a * b);
if (c < b) break;
/*
a == b 时,若 b == c,则产生 1 的贡献,
否则 c 可行的位置有三种,因此产生 3 的贡献。
*/
if (a == b) res += ((c - b) * 3LL + 1LL);
/*
a != b 时,若 b == c,则 c 可行的位置有三种,因此产生 3 的贡 献;否则产生 3! = 6 的贡献。
*/
else res += ((c - b) * 6LL + 3LL);
}
}
return res;
}
对于 d d d,直接枚举即可。
总的时间复杂度为 T ( n ) = O ( ∑ d = 1 n T 1 ( n d 2 ) ) = O ( n 2 3 ) T(n)=O(\sum_{d=1}^{\sqrt n}T_1(\frac{n}{d^2}))=O(n^{\frac{2}{3}}) T(n)=O(∑d=1nT1(d2n))=O(n32)。
5. BZOJ - 4176 Lucas 的数论
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4176
5.1 题意
给定
n
(
1
≤
n
≤
1
0
9
)
n(1 \le n \le 10^9)
n(1≤n≤109),求
∑
i
=
1
n
∑
j
=
1
n
d
(
i
j
)
m
o
d
1
0
9
+
7
\sum_{i=1}^n \sum_{j=1}^n d(ij) \mod 10^9 + 7
i=1∑nj=1∑nd(ij)mod109+7
的值。
5.2 解题过程
我们首先需要知道一个结论:
d
(
n
m
)
=
∑
i
∣
n
∑
j
∣
m
[
gcd
(
i
,
j
)
=
1
]
d(nm)=\sum_{i|n} \sum_{j|m} [\gcd(i,j)=1]
d(nm)=i∣n∑j∣m∑[gcd(i,j)=1]
据此结论,我们进行公式推导:
∑
i
=
1
n
∑
j
=
1
n
d
(
i
j
)
=
∑
i
=
1
n
∑
j
=
1
n
∑
a
∣
i
∑
b
∣
j
[
gcd
(
a
,
b
)
=
1
]
=
∑
i
=
1
n
∑
j
=
1
n
∑
a
∣
i
∑
b
∣
j
∑
d
=
1
n
μ
(
d
)
[
d
∣
i
]
[
d
∣
j
]
=
∑
d
=
1
n
μ
(
d
)
∑
i
=
1
⌊
n
d
⌋
∑
j
=
1
⌊
n
d
⌋
∑
a
∣
i
∑
b
∣
j
1
=
∑
d
=
1
n
μ
(
d
)
∑
a
=
1
⌊
n
d
⌋
∑
b
=
1
⌊
n
d
⌋
∑
i
=
1
⌊
n
d
a
⌋
∑
j
=
1
⌊
n
d
b
⌋
1
=
∑
d
=
1
n
μ
(
d
)
(
∑
a
=
1
⌊
n
d
⌋
⌊
n
d
a
⌋
)
2
\begin{aligned} \sum_{i=1}^n \sum_{j=1}^n d(ij) &= \sum_{i=1}^n \sum_{j=1}^n \sum_{a|i} \sum_{b|j} [\gcd(a,b)=1]\\ &= \sum_{i=1}^n \sum_{j=1}^n \sum_{a|i} \sum_{b|j} \sum_{d=1}^{n}\mu(d)[d|i][d|j]\\ &= \sum_{d=1}^n \mu(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{a|i} \sum_{b|j} 1\\ &= \sum_{d=1}^n \mu(d) \sum_{a=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{b=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{i=1}^{\lfloor \frac{n}{da} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{db} \rfloor} 1\\ &= \sum_{d=1}^n \mu(d) (\sum_{a=1}^{\lfloor \frac{n}{d} \rfloor} \lfloor \frac{n}{da} \rfloor)^2\\ \end{aligned}
i=1∑nj=1∑nd(ij)=i=1∑nj=1∑na∣i∑b∣j∑[gcd(a,b)=1]=i=1∑nj=1∑na∣i∑b∣j∑d=1∑nμ(d)[d∣i][d∣j]=d=1∑nμ(d)i=1∑⌊dn⌋j=1∑⌊dn⌋a∣i∑b∣j∑1=d=1∑nμ(d)a=1∑⌊dn⌋b=1∑⌊dn⌋i=1∑⌊dan⌋j=1∑⌊dbn⌋1=d=1∑nμ(d)(a=1∑⌊dn⌋⌊dan⌋)2
杜教筛 + 数论分块即可,时间复杂度为
O
(
n
3
4
)
O(n^\frac{3}{4})
O(n43)。
6. 51Nod - 1584 加权约数和
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1584
6.1 题意
给定 n ( 1 ≤ n ≤ 1 0 6 ) n(1 \le n \le 10^6) n(1≤n≤106),求
∑ i = 1 n ∑ j = 1 n max ( i , j ) ⋅ σ ( i j ) m o d 1 0 9 + 7 \sum_{i=1}^n \sum_{j=1}^n \max(i,j)\cdot \sigma(ij) \mod 10^9+7 i=1∑nj=1∑nmax(i,j)⋅σ(ij)mod109+7
的值。
注意本题有 T ( 1 ≤ T ≤ 5 ⋅ 1 0 4 ) T(1 \le T \le 5 \cdot 10^4) T(1≤T≤5⋅104) 组读入。
6.2 解题过程
鸣谢 tangjz
和 Candy?
的题解:https://www.cnblogs.com/candy99/p/6723642.html
一个奇妙的变换:
max
(
i
,
j
)
=
∑
k
=
1
n
[
k
≤
i
or
k
≤
j
]
=
n
−
∑
k
=
1
n
[
k
>
i
]
[
k
>
j
]
\begin{aligned} \max(i,j)&=\sum_{k=1}^n[k \le i \text{ or } k \le j]\\ &=n-\sum_{k=1}^n[k > i][k > j] \end{aligned}
max(i,j)=k=1∑n[k≤i or k≤j]=n−k=1∑n[k>i][k>j]
代入到原式中,可以得到
∑
i
=
1
n
∑
j
=
1
n
max
(
i
,
j
)
⋅
σ
(
i
j
)
=
∑
i
=
1
n
∑
j
=
1
n
(
n
−
∑
k
=
1
n
[
k
>
i
]
[
k
>
j
]
)
)
⋅
σ
(
i
j
)
=
n
⋅
∑
i
=
1
n
∑
j
=
1
n
σ
(
i
j
)
−
∑
k
=
1
n
∑
i
=
1
k
−
1
∑
j
=
1
k
−
1
σ
(
i
j
)
=
n
⋅
f
(
n
)
−
∑
k
=
1
n
f
(
k
−
1
)
\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^n \max(i,j) \cdot \sigma(ij)\\ =&\sum_{i=1}^n \sum_{j=1}^n (n-\sum_{k=1}^n[k > i][k > j])) \cdot \sigma(ij)\\ =& n\cdot \sum_{i=1}^n \sum_{j=1}^n \sigma(ij)- \sum_{k=1}^n \sum_{i=1}^{k-1} \sum_{j=1}^{k-1} \sigma(ij)\\ =& n\cdot f(n) - \sum_{k=1}^n f(k-1) \end{aligned}
===i=1∑nj=1∑nmax(i,j)⋅σ(ij)i=1∑nj=1∑n(n−k=1∑n[k>i][k>j]))⋅σ(ij)n⋅i=1∑nj=1∑nσ(ij)−k=1∑ni=1∑k−1j=1∑k−1σ(ij)n⋅f(n)−k=1∑nf(k−1)
而
f
(
n
)
=
∑
i
=
1
n
∑
j
=
1
n
σ
(
i
j
)
=
∑
i
=
1
n
∑
j
=
1
n
∑
a
∣
i
∑
b
∣
j
a
⋅
j
b
[
gcd
(
a
,
b
)
=
1
]
=
∑
d
=
1
n
μ
(
d
)
⋅
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
∑
a
∣
i
a
∑
b
∣
j
b
=
∑
d
=
1
n
μ
(
d
)
⋅
d
⋅
(
∑
i
=
1
⌊
n
/
d
⌋
σ
(
i
)
)
2
\begin{aligned} f(n)&=\sum_{i=1}^n \sum_{j=1}^n \sigma(ij)\\ &=\sum_{i=1}^n \sum_{j=1}^n \sum_{a|i} \sum_{b|j} a \cdot \frac{j}{b} [\gcd(a,b)=1]\\ &=\sum_{d=1}^n \mu(d) \cdot d \sum_{i=1}^{\lfloor n/d \rfloor} \sum_{j=1}^{\lfloor n/d \rfloor} \sum_{a|i} a \sum_{b|j} b\\ &=\sum_{d=1}^n \mu(d) \cdot d\cdot(\sum_{i=1}^{\lfloor n/d \rfloor} \sigma(i))^2 \end{aligned}
f(n)=i=1∑nj=1∑nσ(ij)=i=1∑nj=1∑na∣i∑b∣j∑a⋅bj[gcd(a,b)=1]=d=1∑nμ(d)⋅di=1∑⌊n/d⌋j=1∑⌊n/d⌋a∣i∑ab∣j∑b=d=1∑nμ(d)⋅d⋅(i=1∑⌊n/d⌋σ(i))2
如果直接进行计算的话,需要
O
(
n
)
O(\sqrt n)
O(n) 的时间复杂度,如果需要预处理
f
(
n
)
f(n)
f(n) 的前缀和,则需要
O
(
n
n
)
O(n \sqrt n)
O(nn) 的时间复杂度,会
TLE
\texttt{TLE}
TLE。
进一步观察推出的式子,我们容易发现:对于某一个 d d d 和 ⌊ n d ⌋ \lfloor \frac{n}{d} \rfloor ⌊dn⌋,满足 ⌊ n d ⌋ \lfloor \frac{n}{d} \rfloor ⌊dn⌋ 的 n n n 是一段连续的整数,因此考虑枚举 d d d 和 ⌊ n d ⌋ \lfloor \frac{n}{d} \rfloor ⌊dn⌋ ,并维护一个差分数组 diff \texttt{diff} diff。
for (int i = 1; i <= 1000000; i++) {//枚举 d
for (int j = 1; i * j <= 1000000; j++) {//枚举 n / d
diff[i * j] = (diff[i * j] + val) % Mod;
diff[i * (j + 1)] = (diff[i * (j + 1)] - val + Mod) % Mod;
}
}
for (int i = 1; i <= 1000000; i++) {
diff[i] = (diff[i - 1] + diff[i]) % Mod;
}
因此我们可以做到 O ( n log n ) O(n \log n) O(nlogn) 预处理, O ( 1 ) O(1) O(1) 查询。
7. ZOJ - 3881 From the ABC conjecture
题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827369985
7.1 题意
定义 rad ( n ) \text{rad}(n) rad(n) 为 n n n 的因子中最大的无平方因子数。
设 f ( n ) = rad ( n ) ⋅ φ ( n rad ( n ) ) f(n) = \text{rad}(n) \cdot \varphi(\frac{n}{\text{rad}(n)}) f(n)=rad(n)⋅φ(rad(n)n), g ( n ) = ∑ d ∣ n f ( d ) g(n) = \sum_{d|n}f(d) g(n)=∑d∣nf(d),
求 ∑ i = 1 n g ( i ) m o d 1 0 9 + 9 \sum_{i=1}^n g(i) \mod 10^9+9 ∑i=1ng(i)mod109+9 的值,其中 1 ≤ n ≤ 1 0 12 1 \le n \le 10^{12} 1≤n≤1012。
7.2 解题过程
鸣谢 tangjz
的题解:https://blog.csdn.net/skywalkert/article/details/50505260
-
设 n = p 1 k 1 p 2 k 2 ⋯ p m k m n=p_1^{k_1} p_2^{k_2} \cdots p_m^{k_m} n=p1k1p2k2⋯pmkm,则显然 rad ( n ) = p 1 p 2 ⋯ p m \text{rad}(n)=p_1 p_2 \cdots p_m rad(n)=p1p2⋯pm,因此 rad ( n ) \text{rad}(n) rad(n) 为积性函数。
-
设 gcd ( a , b ) = 1 \gcd(a,b)=1 gcd(a,b)=1,则 f ( a b ) = rad ( a b ) ⋅ φ ( a b rad ( a b ) ) = rad ( a ) ⋅ φ ( a rad ( a ) ) ⋅ rad ( b ) ⋅ φ ( b rad ( b ) ) f(ab)=\text{rad}(ab)\cdot \varphi(\frac{ab}{\text{rad}(ab)})=\text{rad}(a)\cdot \varphi(\frac{a}{\text{rad}(a)})\cdot\text{rad}(b)\cdot \varphi(\frac{b}{\text{rad}(b)}) f(ab)=rad(ab)⋅φ(rad(ab)ab)=rad(a)⋅φ(rad(a)a)⋅rad(b)⋅φ(rad(b)b),因此 f ( n ) f(n) f(n) 为积性函数。
-
g ( n ) = ∏ i = 1 m ∑ j = 0 k m f ( p i j ) = ∏ i = 1 m ( 1 + p i + p i ( p i − 1 ) + p i 2 ( p i − 1 ) + ⋯ ) = ∏ i = 1 m ( 1 + p i k m ) = ∑ i = 1 n ∑ j = 1 n [ i j = n ] [ gcd ( i , j ) = 1 ] ⋅ i \begin{aligned} g(n) &= \prod_{i=1}^m \sum_{j=0} ^ {k_m} f(p_i^j)\\ &= \prod_{i=1}^m (1 + p_i + p_i(p_i-1) + p_i^2(p_i-1)+\cdots)\\ &= \prod_{i=1}^m (1 + p_i^{k_m})\\ &= \sum_{i=1} ^ n \sum_{j=1} ^ n [ij=n][\gcd(i,j)=1]\cdot i \end{aligned} g(n)=i=1∏mj=0∑kmf(pij)=i=1∏m(1+pi+pi(pi−1)+pi2(pi−1)+⋯)=i=1∏m(1+pikm)=i=1∑nj=1∑n[ij=n][gcd(i,j)=1]⋅i
-
∑ k = 1 n g ( k ) = ∑ k = 1 n ∑ i = 1 n ∑ j = 1 n [ i j = n ] [ gcd ( i , j ) = 1 ] ⋅ i = ∑ i = 1 n ∑ j = 1 n [ i j ≤ n ] [ gcd ( i , j ) = 1 ] ⋅ i = ∑ i = 1 n i ∑ j = 1 n [ i j ≤ n ] ∑ d = 1 min ( i , j ) μ ( d ) [ d ∣ i ] [ d ∣ j ] = ∑ d = 1 n μ ( d ) ∑ i = 1 ⌊ n d 2 ⌋ d i ∑ j = 1 ⌊ n d 2 i ⌋ 1 = ∑ d = 1 n μ ( d ) ⋅ d ∑ i = 1 ⌊ n d 2 ⌋ i ∑ j = 1 ⌊ n d 2 i ⌋ 1 \begin{aligned} \sum_{k=1} ^ n g(k) &= \sum_{k=1}^n \sum_{i=1} ^ n \sum_{j=1} ^ n [ij=n][\gcd(i,j)=1]\cdot i\\ &= \sum_{i=1} ^ n \sum_{j=1} ^ n [ij\le n][\gcd(i,j)=1]\cdot i\\ &= \sum_{i=1} ^ n i \sum_{j=1} ^ n [ij\le n] \sum_{d=1}^{\min(i,j)} \mu(d) [d|i] [d|j]\\ &= \sum_{d=1} ^ {\sqrt n} \mu(d) \sum_{i=1} ^ {\lfloor \frac{n}{d^2} \rfloor} di \sum_{j=1}^{\lfloor \frac{n}{d^2 i} \rfloor} 1\\ &= \sum_{d=1} ^ {\sqrt n} \mu(d) \cdot d \sum_{i=1} ^ {\lfloor \frac{n}{d^2} \rfloor} i \sum_{j=1}^{\lfloor \frac{n}{d^2 i} \rfloor} 1\\ \end{aligned} k=1∑ng(k)=k=1∑ni=1∑nj=1∑n[ij=n][gcd(i,j)=1]⋅i=i=1∑nj=1∑n[ij≤n][gcd(i,j)=1]⋅i=i=1∑nij=1∑n[ij≤n]d=1∑min(i,j)μ(d)[d∣i][d∣j]=d=1∑nμ(d)i=1∑⌊d2n⌋dij=1∑⌊d2in⌋1=d=1∑nμ(d)⋅di=1∑⌊d2n⌋ij=1∑⌊d2in⌋1
-
暴力枚举 d d d,并通过数论分块计算内层求和即可。
8. BZOJ - 3512 DZY Loves Math IV
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3512
8.1 题意
求
∑
i
=
1
n
∑
j
=
1
m
φ
(
i
j
)
\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)
i=1∑nj=1∑mφ(ij)
的值,其中
n
≤
1
0
5
,
m
≤
1
0
9
n \le 10^5,m \le 10^9
n≤105,m≤109。
8.2 解题过程
鸣谢 permui
的题解:https://www.cnblogs.com/owenyu/p/7349860.html
首先我们需要知道欧拉函数的一个重要性质:
φ
(
i
j
)
=
φ
(
i
)
⋅
φ
(
j
gcd
(
i
,
j
)
)
⋅
gcd
(
i
,
j
)
\varphi(ij)=\varphi(i) \cdot \varphi(\frac{j}{\gcd(i,j)}) \cdot \gcd(i,j)
φ(ij)=φ(i)⋅φ(gcd(i,j)j)⋅gcd(i,j)
因为
n
n
n 比较小,所以我们可以考虑枚举
n
n
n,然后求出
S
(
n
,
m
)
=
∑
i
=
1
m
φ
(
n
i
)
S(n,m)=\sum_{i=1} ^ m \varphi(ni)
S(n,m)=∑i=1mφ(ni) 的值。
设
x
x
x 为
n
n
n 的质因子之和,
y
=
n
x
y = \frac{n}{x}
y=xn,则有:
S
(
n
,
m
)
=
∑
i
=
1
m
φ
(
n
i
)
=
y
∑
i
=
1
m
φ
(
x
i
)
=
y
∑
i
=
1
m
φ
(
x
gcd
(
x
,
i
)
)
⋅
φ
(
i
)
⋅
gcd
(
x
,
i
)
=
y
∑
i
=
1
m
φ
(
x
gcd
(
x
,
i
)
)
⋅
φ
(
i
)
∑
d
∣
gcd
(
x
,
i
)
φ
(
d
)
=
y
∑
i
=
1
m
φ
(
i
)
∑
d
∣
gcd
(
x
,
i
)
φ
(
x
d
)
=
y
∑
i
=
1
m
φ
(
i
)
∑
d
∣
x
,
d
∣
i
φ
(
x
d
)
=
y
∑
d
∣
x
φ
(
x
d
)
∑
i
=
1
⌊
w
d
⌋
φ
(
d
i
)
=
y
∑
d
∣
x
φ
(
x
d
)
S
(
d
,
⌊
m
d
⌋
)
\begin{aligned} S(n,m) &= \sum_{i=1} ^ m \varphi(ni)\\ &= y \sum_{i=1} ^ m \varphi(xi)\\ &= y \sum_{i=1} ^ m \varphi(\frac{x}{\gcd(x,i)}) \cdot \varphi(i) \cdot \gcd(x,i)\\ &= y \sum_{i=1} ^ m \varphi(\frac{x}{\gcd(x,i)}) \cdot \varphi(i) \sum_{d|\gcd(x,i)} \varphi(d)\\ &= y \sum_{i=1} ^ m \varphi(i) \sum_{d|\gcd(x,i)} \varphi(\frac{x}{d})\\ &= y \sum_{i=1} ^ m \varphi(i) \sum_{d|x,d|i} \varphi(\frac{x}{d})\\ &= y \sum_{d|x} \varphi(\frac{x}{d}) \sum_{i=1} ^ {\lfloor \frac{w}{d} \rfloor} \varphi(di)\\ &= y \sum_{d|x} \varphi(\frac{x}{d}) S(d, \lfloor \frac{m}{d} \rfloor) \end{aligned}
S(n,m)=i=1∑mφ(ni)=yi=1∑mφ(xi)=yi=1∑mφ(gcd(x,i)x)⋅φ(i)⋅gcd(x,i)=yi=1∑mφ(gcd(x,i)x)⋅φ(i)d∣gcd(x,i)∑φ(d)=yi=1∑mφ(i)d∣gcd(x,i)∑φ(dx)=yi=1∑mφ(i)d∣x,d∣i∑φ(dx)=yd∣x∑φ(dx)i=1∑⌊dw⌋φ(di)=yd∣x∑φ(dx)S(d,⌊dm⌋)
容易发现,
S
(
n
,
m
)
S(n,m)
S(n,m) 是一个递归定义的式子,其边界条件为
n
=
1
n=1
n=1,此时问题简化为杜教筛求欧拉函数的前缀和;其他情况下,递归 + 记忆化搜索即可。
可以发现,对于每一个 n n n, S S S 的第二维只有 O ( m ) O(\sqrt m) O(m) 种取值,
因此时间复杂度为 O ( n ⋅ m + n 2 3 ) O(n \cdot \sqrt m + n^{\frac{2}{3}}) O(n⋅m+n32)。
9. 51Nod - 1847 奇怪的数学题
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1847
9.1 题意
定义 sgcd ( i , j ) \text{sgcd}(i,j) sgcd(i,j) 表示 i i i 和 j j j 的次大公约数,特别地,若 gcd ( i , j ) = 1 \gcd(i,j)=1 gcd(i,j)=1,则 sgcd ( i , j ) = 0 \text{sgcd}(i,j)=0 sgcd(i,j)=0。
求
∑
i
=
1
n
∑
j
=
1
n
(
sgcd
(
i
,
j
)
)
k
\sum_{i=1}^n \sum_{j=1}^n (\text{sgcd}(i,j))^k
i=1∑nj=1∑n(sgcd(i,j))k
的值,其中
1
≤
n
≤
1
0
9
,
1
≤
k
≤
50
1 \le n \le 10^9,1 \le k \le 50
1≤n≤109,1≤k≤50。
9.2 解题过程
鸣谢 yww
的题解:https://www.cnblogs.com/ywwyww/p/9113548.html
先推式子!
很显然, sgcd ( i , j ) \text{sgcd}(i,j) sgcd(i,j) 的值仅与 gcd ( i , j ) \gcd(i,j) gcd(i,j) 有关,相当于将 gcd ( i , j ) \gcd(i,j) gcd(i,j) 除以其最大质因子。
为方便处理,我们设 sgcd ( i , j ) = f ( gcd ( i , j ) ) \text{sgcd}(i,j)=f(\gcd(i,j)) sgcd(i,j)=f(gcd(i,j))。
之后,我们有:
∑
i
=
1
n
∑
j
=
1
n
(
sgcd
(
i
,
j
)
)
k
=
∑
i
=
1
n
∑
j
=
1
n
f
(
gcd
(
i
,
j
)
)
k
=
∑
l
=
1
n
∑
i
=
1
n
∑
j
=
1
n
f
(
l
)
k
[
gcd
(
i
,
j
)
=
l
]
=
∑
l
=
1
n
f
(
l
)
k
(
2
∑
j
=
1
⌊
n
i
⌋
φ
(
j
)
−
1
)
\begin{aligned} \sum_{i=1}^n \sum_{j=1}^n (\text{sgcd}(i,j))^k &= \sum_{i=1}^n \sum_{j=1}^n f(\gcd(i,j))^k\\ &= \sum_{l=1}^n \sum_{i=1}^n \sum_{j=1}^n f(l)^k [\gcd(i,j)=l] \\ &= \sum_{l=1}^n f(l)^k (2\sum_{j=1}^{\lfloor \frac{n}{i} \rfloor} \varphi(j) - 1) \end{aligned}
i=1∑nj=1∑n(sgcd(i,j))k=i=1∑nj=1∑nf(gcd(i,j))k=l=1∑ni=1∑nj=1∑nf(l)k[gcd(i,j)=l]=l=1∑nf(l)k(2j=1∑⌊in⌋φ(j)−1)
很显然,这一式子可以通过数论分块 + 杜教筛求出。
但是 f ( l ) k f(l)^k f(l)k 这一部分需要单独处理。
观察 min_25
筛
g
(
n
,
j
)
g(n,j)
g(n,j) 函数的转移方程:
g
(
n
,
j
)
=
{
g
(
n
,
j
−
1
)
,
p
j
2
>
n
g
(
n
,
j
−
1
)
−
p
j
k
[
g
(
⌊
n
p
j
⌋
,
j
−
1
)
−
∑
i
=
1
j
−
1
p
i
k
]
,
p
j
2
≤
n
\begin{aligned} g(n,j) &=\left\{ \begin{array}{c} g(n,j-1),p_j^2 > n\\ g(n,j-1)-p_j^k[g(\lfloor \frac{n}{p_j} \rfloor, j - 1) - \sum_{i=1}^{j-1}p_i^k], p_j^2 \le n \end{array} \right. \end{aligned}
g(n,j)={g(n,j−1),pj2>ng(n,j−1)−pjk[g(⌊pjn⌋,j−1)−∑i=1j−1pik],pj2≤n
我们可以发现
g
(
⌊
n
p
j
⌋
,
j
−
1
)
−
∑
i
=
1
j
−
1
p
i
k
g(\lfloor \frac{n}{p_j} \rfloor, j - 1) - \sum_{i=1}^{j-1}p_i^k
g(⌊pjn⌋,j−1)−∑i=1j−1pik 的含义是最小质因子为
p
j
p_j
pj 的数除以
p
j
p_j
pj 之后的
k
k
k 次方和,这满足了
sgcd
\text{sgcd}
sgcd 的定义。因此我们可以在计算
g
g
g 函数时,将所有的
g
(
⌊
n
p
j
⌋
,
j
−
1
)
−
∑
i
=
1
j
−
1
p
i
k
g(\lfloor \frac{n}{p_j} \rfloor, j - 1) - \sum_{i=1}^{j-1}p_i^k
g(⌊pjn⌋,j−1)−∑i=1j−1pik 贡献到
n
n
n 的答案中。
注意到 g g g 函数是不考虑 1 1 1 的,在 sgcd \text{sgcd} sgcd 的含义下,相当于没有把质数的贡献加入其中。
因此我们在处理时,需要把质数的贡献,即 [ 2 , n ] [2,n] [2,n] 之间质数的个数加到答案中。
本题中,min_25
筛需要借助于
k
k
k 次方和求和函数。
总的时间复杂度为:
O
(
1
0
6
log
k
+
k
2
n
+
n
3
4
log
n
+
n
2
3
)
O(10^6 \log k + k^2\sqrt n + \frac{n^{\frac{3}{4}}}{\log n} + n^{\frac{2}{3}})
O(106logk+k2n+lognn43+n32)
10. SPOJ - DIVCNT2
题目链接:http://spoj.com/problems/DIVCNT2
10.1 题意
给定
n
(
1
≤
n
≤
1
0
12
)
n(1 \le n \le 10^{12})
n(1≤n≤1012),求
∑
i
=
1
n
d
(
i
2
)
\sum_{i=1}^n d(i^2)
i=1∑nd(i2)
的值。
10.2 解题过程
鸣谢 Candy?
的题解:https://www.cnblogs.com/candy99/p/6715013.html
设 n = p 1 k 1 p 2 k 2 ⋯ p m k m n=p_1^{k_1} p_2^{k_2} \cdots p_m^{k_m} n=p1k1p2k2⋯pmkm,则 n 2 = p 1 2 k 1 p 2 2 k 2 ⋯ p m 2 k m n^2=p_1^{2k_1} p_2^{2k_2} \cdots p_m^{2k_m} n2=p12k1p22k2⋯pm2km。
我们需要考虑在 n 2 n^2 n2 中存在,但在 n n n 中不存在的因子。
对于任意 d ∣ n d|n d∣n,考虑其质因子 p p p,设其次数为 k k k,该质因子在 n n n 中的次数为 k 0 k_0 k0,则我们发现:
p k p^k pk 在 n n n 和 n 2 n^2 n2 中都出现,而 p k + k 0 p^{k+k_0} pk+k0 只在 n 2 n^2 n2 中出现。
因为我们会枚举到 n n n 的所有因子,所以对于 d d d 的每个质因子,只需考虑 p k p^k pk 和 p k + k 0 p^{k + k_0} pk+k0 两种情况即可。
上述过程可以表达为:
d
(
n
2
)
=
∑
d
∣
n
2
w
(
d
)
d(n^2)=\sum_{d|n}2^{w(d)}
d(n2)=d∣n∑2w(d)
其中
w
(
d
)
w(d)
w(d) 为
d
d
d 的质因子个数。
根据
2
w
(
n
)
=
∑
d
∣
n
μ
2
(
d
)
2^{w(n)}=\sum_{d|n}\mu^2(d)
2w(n)=∑d∣nμ2(d),我们可对上式进一步化简。
d
(
n
2
)
=
∑
d
∣
n
2
w
(
d
)
=
∑
d
∣
n
∑
e
∣
d
μ
2
(
e
)
=
(
μ
2
∗
1
)
∗
1
=
μ
2
∗
(
1
∗
1
)
=
μ
2
∗
d
\begin{aligned} d(n^2) &= \sum_{d|n}2^{w(d)}\\ &= \sum_{d|n} \sum_{e|d}\mu^2(e)\\ &= (\mu^2 * 1)*1 \\ &= \mu^2 * (1 * 1)\\ &= \mu^2 * d \end{aligned}
d(n2)=d∣n∑2w(d)=d∣n∑e∣d∑μ2(e)=(μ2∗1)∗1=μ2∗(1∗1)=μ2∗d
因此有
∑
i
=
1
n
d
(
i
2
)
=
∑
i
=
1
n
(
μ
2
∗
d
)
(
n
)
=
∑
i
=
1
n
∑
e
∣
i
μ
2
(
e
)
⋅
d
(
i
e
)
=
∑
e
=
1
n
μ
2
(
e
)
∑
i
=
1
⌊
n
e
⌋
d
(
i
)
\begin{aligned} \sum_{i=1}^n d(i^2) &= \sum_{i=1}^n {(\mu^2 * d)(n)}\\ &= \sum_{i=1}^n \sum_{e|i} \mu^2(e)\cdot d(\frac{i}{e})\\ &= \sum_{e=1}^n \mu^2(e) \sum_{i=1}^{\lfloor \frac{n}{e} \rfloor} d(i) \end{aligned}
i=1∑nd(i2)=i=1∑n(μ2∗d)(n)=i=1∑ne∣i∑μ2(e)⋅d(ei)=e=1∑nμ2(e)i=1∑⌊en⌋d(i)
我们发现,
∑
i
=
1
n
μ
2
(
i
)
=
∑
i
2
∣
n
μ
(
i
)
=
∑
i
=
1
n
μ
(
i
)
⋅
⌊
n
i
2
⌋
\sum_{i=1}^n \mu^2(i)=\sum_{i^2|n}\mu(i) = \sum_{i=1}^{\sqrt n} \mu(i) \cdot \lfloor \frac{n}{i^2} \rfloor
i=1∑nμ2(i)=i2∣n∑μ(i)=i=1∑nμ(i)⋅⌊i2n⌋
∑ i = 1 n d ( i ) = ∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^n d(i) = \sum_{i=1}^n \lfloor \frac{n}{i} \rfloor i=1∑nd(i)=i=1∑n⌊in⌋
因此,参考杜教筛的时间复杂度证明,我们可以预处理出 μ 2 ( i ) \mu^2(i) μ2(i) 和 d ( i ) d(i) d(i) 的前 n 2 3 n^{\frac{2}{3}} n32 项和,后面的部分直接数论分块即可。
总的时间复杂度为: O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)。
本题另有 min_25
筛的做法,因其过于简单,这里不再赘述。
11. SPOJ - DIVCNTK
题目链接:http://spoj.com/problems/DIVCNTK
10.1 题意
给定
n
,
k
(
1
≤
n
,
k
≤
1
0
10
)
n,k(1 \le n,k \le 10^{10})
n,k(1≤n,k≤1010),求
∑
i
=
1
n
d
(
i
k
)
m
o
d
2
64
\sum_{i=1}^n d(i^k) \mod 2^{64}
i=1∑nd(ik)mod264
的值。
10.2 解题过程
设 n = p 1 l 1 p 2 l 2 ⋯ p m l m n=p_1^{l_1} p_2^{l_2} \cdots p_m^{l_m} n=p1l1p2l2⋯pmlm,则 n = p 1 k l 1 p 2 k l 2 ⋯ p m k l m n=p_1^{kl_1} p_2^{kl_2} \cdots p_m^{kl_m} n=p1kl1p2kl2⋯pmklm。
设 f ( n ) = d ( n k ) f(n)=d(n^k) f(n)=d(nk),则有
f
(
1
)
=
1
f(1)=1
f(1)=1,
f
(
p
)
=
k
+
1
f(p)=k+1
f(p)=k+1,
f
(
p
l
)
=
k
l
+
1
f(p^l)=kl+1
f(pl)=kl+1,直接 min_25
筛即可。
时间复杂度: O ( n 3 4 log n ) O(\frac{n^\frac{3}{4}}{\log n}) O(lognn43)。
12. 51Nod - 1594 Gcd and Phi
http://www.51nod.com/Challenge/Problem.html#problemId=1594
12.1 题意
给定
n
(
1
≤
n
≤
2
⋅
1
0
6
)
n(1 \le n \le 2 \cdot 10^6)
n(1≤n≤2⋅106),求
∑
i
=
1
n
∑
j
=
1
n
φ
(
gcd
(
φ
(
i
)
,
φ
(
j
)
)
)
\sum_{i=1}^n \sum_{j=1}^n \varphi(\gcd(\varphi(i),\varphi(j)))
i=1∑nj=1∑nφ(gcd(φ(i),φ(j)))
的值。
12.2 解题过程
本题需要从计数的角度,对原式进行变换。
设
g
(
k
)
=
∑
i
=
1
n
[
φ
(
i
)
=
k
]
g(k) = \sum_{i=1}^n[\varphi(i)=k]
g(k)=∑i=1n[φ(i)=k],则有
∑
i
=
1
n
∑
j
=
1
n
φ
(
gcd
(
φ
(
i
)
,
φ
(
j
)
)
)
=
∑
i
=
1
n
∑
j
=
1
n
φ
(
gcd
(
i
,
j
)
)
⋅
g
(
i
)
g
(
j
)
=
∑
k
=
1
n
φ
(
k
)
∑
i
=
1
n
∑
j
=
1
n
g
(
i
)
g
(
j
)
[
gcd
(
i
,
j
)
=
k
]
=
∑
k
=
1
n
φ
(
k
)
(
∑
i
=
1
⌊
n
k
⌋
g
(
k
i
)
)
2
∑
d
=
1
⌊
n
k
⌋
μ
(
d
)
[
d
∣
i
]
[
d
∣
j
]
=
∑
k
=
1
n
φ
(
k
)
∑
d
=
1
⌊
n
k
⌋
μ
(
d
)
(
∑
i
=
1
⌊
n
k
d
⌋
g
(
k
d
i
)
)
2
\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^n \varphi(\gcd(\varphi(i),\varphi(j)))\\ =& \sum_{i=1}^n \sum_{j=1}^n \varphi(\gcd(i,j)) \cdot g(i)g(j)\\ =& \sum_{k=1}^n \varphi(k) \sum_{i=1}^{n} \sum_{j=1}^{n} g(i)g(j) [\gcd(i,j)=k]\\ =& \sum_{k=1}^n \varphi(k) (\sum_{i=1}^{\lfloor \frac{n}{k} \rfloor} g(ki))^2 \sum_{d=1}^{\lfloor \frac{n}{k} \rfloor} \mu(d)[d|i][d|j]\\ =& \sum_{k=1}^n \varphi(k) \sum_{d=1}^{\lfloor \frac{n}{k} \rfloor} \mu(d) (\sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} g(kdi))^2 \end{aligned}
====i=1∑nj=1∑nφ(gcd(φ(i),φ(j)))i=1∑nj=1∑nφ(gcd(i,j))⋅g(i)g(j)k=1∑nφ(k)i=1∑nj=1∑ng(i)g(j)[gcd(i,j)=k]k=1∑nφ(k)(i=1∑⌊kn⌋g(ki))2d=1∑⌊kn⌋μ(d)[d∣i][d∣j]k=1∑nφ(k)d=1∑⌊kn⌋μ(d)(i=1∑⌊kdn⌋g(kdi))2
在线性筛预处理出
φ
\varphi
φ 的基础上,
g
(
n
)
g(n)
g(n) 的值可以
O
(
n
)
O(n)
O(n) 预处理出。
memset(g, 0, sizeof(g));
for (int i = 1; i <= n; i++) {
g[phi[i]]++;
}
观察 ∑ i = 1 ⌊ n k d ⌋ g ( k d i ) \sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} g(kdi) ∑i=1⌊kdn⌋g(kdi),可以发现这是对 k d kd kd 倍数的 g g g 值求和,因此可以 O ( n log n ) O(n \log n) O(nlogn) 进行预处理。
for (int i = 1; i <= n; i++) {
for (int j = i + i; j <= n; j += i) {
g[i] += g[j];
}
}
最后 O ( n log n ) O(n \log n) O(nlogn) 地枚举 k k k 和 d d d,求和即可。
13. 51Nod - 2026 Gcd and Lcm
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=2026
13.1 题意
定义
f
(
n
)
=
∑
d
∣
n
μ
(
d
)
⋅
d
f(n)=\sum_{d|n}\mu(d)\cdot d
f(n)=∑d∣nμ(d)⋅d,给定
n
(
1
≤
n
≤
1
0
9
)
n(1 \le n \le 10^9)
n(1≤n≤109),求
∑
i
=
1
n
∑
j
=
1
n
f
(
gcd
(
i
,
j
)
)
⋅
f
(
lcm
(
i
,
j
)
)
m
o
d
1
0
9
+
7
\sum_{i=1}^n \sum_{j=1}^n f(\gcd(i,j))\cdot f(\text{lcm}(i,j)) \mod 10^9 + 7
i=1∑nj=1∑nf(gcd(i,j))⋅f(lcm(i,j))mod109+7
的值。
13.2 解题过程
显然 f ( n ) f(n) f(n) 为积性函数。
做题时不要直接套路推式子!!
如果把 f ( gcd ( i , j ) ) ⋅ f ( lcm ( i , j ) ) f(\gcd(i,j))\cdot f(\text{lcm}(i,j)) f(gcd(i,j))⋅f(lcm(i,j)) 拆成质因子幂次函数值乘积的形式,会发现它们经过某些交换之后,可以化成 f ( i ) ⋅ f ( j ) f(i)\cdot f(j) f(i)⋅f(j) 的形式。
因此式子转化为
∑
i
=
1
n
∑
j
=
1
n
f
(
i
)
f
(
j
)
=
(
∑
i
=
1
n
f
(
i
)
)
2
\sum_{i=1}^n \sum_{j=1}^n f(i)f(j)=(\sum_{i=1}^n f(i))^2
i=1∑nj=1∑nf(i)f(j)=(i=1∑nf(i))2
而
f
=
(
μ
⋅
i
d
)
∗
I
f=(\mu \cdot id) * I
f=(μ⋅id)∗I
我们将
f
f
f 卷上
i
d
id
id,得到
f
∗
i
d
=
(
μ
⋅
i
d
)
∗
i
d
∗
I
=
I
f * id=(\mu \cdot id) * id * I= I
f∗id=(μ⋅id)∗id∗I=I
因此
f
f
f 的前缀和可以线性筛 + 杜教筛求出,时间复杂度为
O
(
n
2
3
)
O(n ^ {\frac{2}{3}})
O(n32)。
14. Luogu - P5221 Product
题目链接:https://www.luogu.org/problem/P5221
14.1 题意
给定
n
(
1
≤
n
≤
1
0
6
)
n(1 \le n \le 10^6)
n(1≤n≤106),求
∏
i
=
1
n
∏
j
=
1
n
lcm
(
i
,
j
)
gcd
(
i
,
j
)
m
o
d
104857601
\prod_{i=1}^n \prod_{j=1}^n \frac{\text{lcm}(i,j)}{\gcd(i,j)} \mod 104857601
i=1∏nj=1∏ngcd(i,j)lcm(i,j)mod104857601
的值。
14.2 解题过程
鸣谢 Nemlit
的题解:https://www.luogu.org/blog/tbr-blog/solution-p5221
∏
i
=
1
n
∏
j
=
1
n
lcm
(
i
,
j
)
gcd
(
i
,
j
)
=
∏
i
=
1
n
∏
j
=
1
n
i
j
gcd
2
(
i
,
j
)
=
(
∏
i
=
1
n
∏
j
=
1
n
i
j
)
⋅
(
∏
i
=
1
n
∏
j
=
1
n
gcd
(
i
,
j
)
)
−
2
\begin{aligned} &\prod_{i=1}^n \prod_{j=1}^n \frac{\text{lcm}(i,j)}{\gcd(i,j)}\\ =& \prod_{i=1}^n \prod_{j=1}^n \frac{ij}{\gcd^2(i,j)}\\ =& (\prod_{i=1}^n \prod_{j=1}^n ij)\cdot(\prod_{i=1}^n \prod_{j=1}^n \gcd(i,j))^{-2} \end{aligned}
==i=1∏nj=1∏ngcd(i,j)lcm(i,j)i=1∏nj=1∏ngcd2(i,j)ij(i=1∏nj=1∏nij)⋅(i=1∏nj=1∏ngcd(i,j))−2
其中,
∏
i
=
1
n
∏
j
=
1
n
i
j
=
∏
i
=
1
n
(
i
n
⋅
n
!
)
=
(
n
!
)
n
⋅
(
n
!
)
n
=
(
n
!
)
2
n
\begin{aligned} & \prod_{i=1}^n \prod_{j=1}^n ij\\ =& \prod_{i=1}^n (i^n \cdot n!)\\ =& (n!)^n\cdot (n!)^n\\ =& (n!)^{2n} \end{aligned}
===i=1∏nj=1∏niji=1∏n(in⋅n!)(n!)n⋅(n!)n(n!)2n
∏ i = 1 n ∏ j = 1 n gcd ( i , j ) = ∏ d = 1 n d ∑ i = 1 n ∑ j = 1 n [ gcd ( i , j ) = d ] = ∏ d = 1 n d ( 2 ∑ i = 1 ⌊ n / d ⌋ φ ( i ) ) − 1 \begin{aligned} &\prod_{i=1}^n \prod_{j=1}^n \gcd(i,j)\\ =& \prod_{d=1}^n d^{\sum_{i=1}^n \sum_{j=1}^n [\gcd(i,j)=d]}\\ =& \prod_{d=1}^n d^{(2\sum_{i=1}^{\lfloor n/d \rfloor} \varphi(i))-1} \\ \end{aligned} ==i=1∏nj=1∏ngcd(i,j)d=1∏nd∑i=1n∑j=1n[gcd(i,j)=d]d=1∏nd(2∑i=1⌊n/d⌋φ(i))−1
二者合并之后,枚举 d d d,之后欧拉降幂 + 矩阵快速幂即可。
时间复杂度: O ( n log 1 0 8 ) O(n \log 10^8) O(nlog108)。
请特别注意本题的时空限制( 200 ms,7.81 MB \texttt{200 ms,7.81 MB} 200 ms,7.81 MB)。
15. Luogu - P3172 [CQOI2015]选数
题目链接:https://www.luogu.org/problem/P3172
15.1 题意
给定整数 n , k , l , h ( 1 ≤ n , k ≤ 1 0 9 , 1 ≤ l ≤ h ≤ 1 0 9 , h − l ≤ 1 0 5 ) n,k,l,h(1 \le n,k \le 10^9,1 \le l \le h \le 10^9,h-l \le 10^5) n,k,l,h(1≤n,k≤109,1≤l≤h≤109,h−l≤105),从区间 [ l , h ] [l,h] [l,h] 中选取 n n n 个整数(可以重复选取),问最大公约数恰好为 k k k 的选取方案有多少个。
答案对 1 0 9 + 7 10^9+7 109+7 取模。
15.2 解题过程
根据题意,实际上我们要求的是下面式子的值:
∑
a
1
=
l
h
∑
a
2
=
l
h
⋯
∑
a
n
=
l
h
[
gcd
(
a
1
,
a
2
,
⋯
,
a
n
)
=
k
]
=
∑
d
=
1
⌊
h
/
k
⌋
μ
(
d
)
⋅
(
⌊
h
d
k
⌋
−
⌊
l
−
1
d
k
⌋
)
n
\begin{aligned} &\sum_{a_1=l}^{h} \sum_{a_2=l}^{h} \cdots \sum_{a_n=l}^{h}[\gcd(a_1,a_2,\cdots,a_n)=k]\\ =&\sum_{d=1}^{\lfloor h/k \rfloor} \mu(d) \cdot (\lfloor \frac{h}{dk} \rfloor-\lfloor \frac{l-1}{dk} \rfloor)^n \end{aligned}
=a1=l∑ha2=l∑h⋯an=l∑h[gcd(a1,a2,⋯,an)=k]d=1∑⌊h/k⌋μ(d)⋅(⌊dkh⌋−⌊dkl−1⌋)n
预处理
⌊
h
d
k
⌋
−
⌊
l
−
1
d
k
⌋
\lfloor \frac{h}{dk} \rfloor-\lfloor \frac{l-1}{dk} \rfloor
⌊dkh⌋−⌊dkl−1⌋ 的幂次,之后分段整除分块 + 杜教筛即可。
16. Luogu - P4844 LJJ 爱数数
题目链接:https://www.luogu.org/problem/P4844
16.1 题意
给定 n ( 1 ≤ n ≤ 1 0 12 ) n(1 \le n \le 10^{12}) n(1≤n≤1012),求满足下列条件的三元组 ( a , b , c ) ( a , b , c ≤ n ) (a,b,c)(a,b,c \le n) (a,b,c)(a,b,c≤n) 的个数:
- gcd ( a , b , c ) = 1 \gcd(a,b,c)=1 gcd(a,b,c)=1
- 1 a + 1 b = 1 c \frac{1}{a}+\frac{1}{b}=\frac{1}{c} a1+b1=c1
16.2 解题过程
鸣谢 lxl
的题解:https://www.luogu.org/blog/Ynoi/solution-p4844
根据 1 a + 1 b = 1 c \frac{1}{a}+\frac{1}{b}=\frac{1}{c} a1+b1=c1,可以得出 a b = c a + c b ab=ca+cb ab=ca+cb,移项之后,两边同时加上 c 2 c^2 c2,得到 a b − a c − b c + c 2 = c 2 ab-ac-bc+c^2=c^2 ab−ac−bc+c2=c2。
因式分解后得到 c 2 = ( a − c ) ( b − c ) c^2=(a-c)(b-c) c2=(a−c)(b−c)。
设 a − c = k x 2 a-c=kx^2 a−c=kx2, b − c = k y 2 b-c=ky^2 b−c=ky2,则有 c 2 = k 2 x 2 y 2 c^2=k^2x^2y^2 c2=k2x2y2,解出 c = k x y c=kxy c=kxy。
由 gcd ( a , b , c ) = 1 \gcd(a,b,c)=1 gcd(a,b,c)=1,根据反证法可以推出 k = 1 k=1 k=1,因此
a − c = x 2 a-c=x^2 a−c=x2, b − c − y 2 b-c-y^2 b−c−y2, c = x y c=xy c=xy。
而
gcd
(
a
,
b
,
c
)
=
gcd
(
x
2
+
x
y
,
y
2
+
x
y
,
x
y
)
=
gcd
(
x
(
x
+
y
)
,
y
(
x
+
y
)
,
x
y
)
=
gcd
(
(
x
+
y
)
gcd
(
x
,
y
)
,
x
y
)
=
1
\begin{aligned} &\gcd(a,b,c)\\ =&\gcd(x^2+xy,y^2+xy,xy)\\ =&\gcd(x(x+y),y(x+y),xy)\\ =&\gcd((x+y)\gcd(x,y),xy)\\ =&1 \end{aligned}
====gcd(a,b,c)gcd(x2+xy,y2+xy,xy)gcd(x(x+y),y(x+y),xy)gcd((x+y)gcd(x,y),xy)1
解出
gcd
(
x
,
y
)
=
1
\gcd(x,y)=1
gcd(x,y)=1,因此
gcd
(
x
2
,
y
2
)
=
1
\gcd(x^2,y^2)=1
gcd(x2,y2)=1,即
gcd
(
a
−
c
,
b
−
c
)
=
1
\gcd(a-c,b-c)=1
gcd(a−c,b−c)=1。
设 x ∈ [ 1 , a − c ] x \in [1, \sqrt{a-c}] x∈[1,a−c],当 y y y 的范围确定之后,问题转化为求 gcd ( x , y ) = 1 \gcd(x,y)=1 gcd(x,y)=1 的 ( x , y ) (x,y) (x,y) 个数。
下面我们来确定 y y y 的范围。
由题意可知 a , b , c ≤ n a,b,c \le n a,b,c≤n,我们从此入手。
(1) 根据 c ≤ n c \le n c≤n 以及 x y = c xy=c xy=c,可知 y = c x ≤ n x y=\frac{c}{x}\le\frac{n}{x} y=xc≤xn。
(2) 根据 a ≤ n a \le n a≤n 以及 a − c = x 2 a-c=x^2 a−c=x2,可知 a = x 2 + c = x 2 + x y ≤ n a=x^2+c=x^2+xy\le n a=x2+c=x2+xy≤n,解出 y ≤ n − x 2 x y \le \frac{n-x^2}{x} y≤xn−x2。
(3) 根据 b ≤ n b \le n b≤n 以及 b − c = y 2 b-c=y^2 b−c=y2,可知 y 2 + x y = b ≤ n y^2+xy=b\le n y2+xy=b≤n,解出 0 < y ≤ − x 2 + n + x 2 4 0 < y \le -\frac{x}{2}+\sqrt{n+\frac{x^2}{4}} 0<y≤−2x+n+4x2.
最终可确定 y y y 的上限 f ( y ) = min ( n − x 2 x , − x 2 + n + x 2 4 ) f(y) = \min(\frac{n-x^2}{x}, -\frac{x}{2}+\sqrt{n+\frac{x^2}{4}}) f(y)=min(xn−x2,−2x+n+4x2)。
因此最终的答案为
∑
x
=
1
n
∑
y
=
1
f
(
x
)
[
gcd
(
x
,
y
)
=
1
]
\sum_{x=1}^{\sqrt n} \sum_{y=1}^{f(x)}[\gcd(x,y)=1]
∑x=1n∑y=1f(x)[gcd(x,y)=1],我们将内层循环单独拿出来计算:
∑
y
=
1
f
(
x
)
[
gcd
(
x
,
y
)
=
1
]
=
∑
y
=
1
f
(
x
)
∑
d
=
1
f
(
x
)
μ
(
d
)
[
d
∣
x
]
[
d
∣
y
]
=
∑
d
=
1
,
d
∣
x
f
(
x
)
μ
(
d
)
⌊
f
(
x
)
d
⌋
\begin{aligned} &\sum_{y=1}^{f(x)}[\gcd(x,y)=1]\\ =&\sum_{y=1}^{f(x)} \sum_{d=1}^{f(x)} \mu(d) [d|x] [d|y]\\ =&\sum_{d=1,d|x}^{f(x)} \mu(d)\lfloor \frac{f(x)}{d} \rfloor \end{aligned}
==y=1∑f(x)[gcd(x,y)=1]y=1∑f(x)d=1∑f(x)μ(d)[d∣x][d∣y]d=1,d∣x∑f(x)μ(d)⌊df(x)⌋
因此,我们只需通过枚举倍数的方式即可计算出答案,代码如下:
for (int i = 1; i <= range; i++) {
for (int j = i; j <= range; j += i) {
ans += mu[i] * (F[j] / i);
}
}
时间复杂度: O ( n log n ) O(\sqrt n \log \sqrt n) O(nlogn)。
17. 51Nod - 1575 Gcd and Lcm
17.1 题意
给定
n
(
1
≤
n
≤
1
0
9
)
n(1 \le n \le 10^9)
n(1≤n≤109),求
∑
i
=
1
n
∑
j
=
1
i
∑
k
=
1
i
lcm
[
gcd
(
i
,
j
)
,
gcd
(
i
,
k
)
]
m
o
d
2
32
\sum_{i=1}^n \sum_{j=1}^i \sum_{k=1}^i \text{lcm}[\gcd(i,j),\gcd(i,k)] \mod 2^{32}
i=1∑nj=1∑ik=1∑ilcm[gcd(i,j),gcd(i,k)]mod232
的值。
注意本题有 T ( 1 ≤ T ≤ 10 ) T(1\le T\le 10) T(1≤T≤10) 组读入。
17.2 解题过程
鸣谢 tangjz
的题解:https://blog.csdn.net/skywalkert/article/details/54415816
首先先对
lcm
(
n
,
m
)
\text{lcm}(n,m)
lcm(n,m) 进行变换。
lcm
(
n
,
m
)
=
∑
d
∣
n
,
d
∣
m
[
gcd
(
n
,
m
)
=
d
]
n
m
d
=
∑
d
∣
n
,
d
∣
m
[
gcd
(
n
,
m
)
=
d
]
n
d
m
d
d
=
∑
d
∣
n
,
d
∣
m
[
gcd
(
n
d
,
m
d
)
=
1
]
n
d
m
d
d
=
∑
d
∣
n
,
d
∣
m
∑
e
∣
n
d
,
e
∣
m
d
μ
(
e
)
⋅
e
2
⋅
n
d
e
m
d
e
d
\begin{aligned} \text{lcm}(n,m)&=\sum_{d|n,d|m}[\gcd(n,m)=d]\frac{nm}{d}\\ &=\sum_{d|n,d|m}[\gcd(n,m)=d]\frac{n}{d}\frac{m}{d}d\\ &=\sum_{d|n,d|m}[\gcd(\frac{n}{d},\frac{m}{d})=1]\frac{n}{d}\frac{m}{d}d\\ &=\sum_{d|n,d|m}\sum_{e|\frac{n}{d},e|\frac{m}{d}}\mu(e)\cdot e^2\cdot\frac{n}{de}\frac{m}{de}d\\ \end{aligned}
lcm(n,m)=d∣n,d∣m∑[gcd(n,m)=d]dnm=d∣n,d∣m∑[gcd(n,m)=d]dndmd=d∣n,d∣m∑[gcd(dn,dm)=1]dndmd=d∣n,d∣m∑e∣dn,e∣dm∑μ(e)⋅e2⋅dendemd
之后对公式进行推导:
∑
i
=
1
n
∑
j
=
1
i
∑
k
=
1
i
lcm
[
gcd
(
i
,
j
)
,
gcd
(
i
,
k
)
]
=
∑
i
=
1
n
∑
j
=
1
i
∑
k
=
1
i
∑
d
1
∣
i
∑
d
2
∣
i
lcm
(
d
1
,
d
2
)
[
gcd
(
i
,
j
)
=
d
1
]
[
gcd
(
i
,
k
)
=
d
2
]
=
∑
i
=
1
n
∑
d
1
∣
i
∑
d
2
∣
i
lcm
(
d
1
,
d
2
)
∑
j
=
1
i
[
gcd
(
i
,
j
)
=
d
1
]
∑
k
=
1
i
[
gcd
(
i
,
k
)
=
d
2
]
=
∑
i
=
1
n
∑
d
1
∣
i
∑
d
2
∣
i
lcm
(
d
1
,
d
2
)
φ
(
i
d
1
)
φ
(
i
d
2
)
=
∑
i
=
1
n
∑
d
1
∣
i
∑
d
2
∣
i
∑
d
∣
d
1
,
d
∣
d
2
∑
e
∣
d
1
d
,
e
∣
d
2
d
μ
(
e
)
⋅
e
2
⋅
d
1
d
e
d
2
d
e
d
φ
(
i
d
1
)
φ
(
i
d
2
)
=
∑
i
=
1
n
∑
d
1
∣
i
∑
d
2
∣
i
∑
d
∣
d
1
,
d
∣
d
2
∑
e
∣
d
1
d
,
e
∣
d
2
d
μ
(
e
)
⋅
e
2
⋅
d
1
d
e
d
2
d
e
d
φ
(
i
d
e
d
1
d
e
)
φ
(
i
d
e
d
2
d
e
)
=
∑
i
=
1
n
∑
d
∣
i
∑
e
∣
i
d
d
⋅
μ
(
e
)
⋅
e
2
⋅
(
∑
d
1
d
e
∣
i
d
e
d
1
d
e
φ
(
i
d
e
d
1
d
e
)
)
=
∑
i
=
1
n
∑
x
y
z
∣
i
x
μ
(
y
)
⋅
y
2
(
∑
d
∣
z
d
φ
(
z
d
)
)
2
=
∑
i
=
1
n
(
i
d
∗
(
μ
⋅
i
d
2
)
∗
(
i
d
∗
φ
)
2
)
(
i
)
\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^i \sum_{k=1}^i \text{lcm}[\gcd(i,j),\gcd(i,k)] \\ =&\sum_{i=1}^n \sum_{j=1}^i \sum_{k=1}^i \sum_{d_1|i} \sum_{d_2|i} \text{lcm}(d_1,d_2)[\gcd(i,j)=d_1][\gcd(i,k)=d_2]\\ =&\sum_{i=1}^n \sum_{d_1|i} \sum_{d_2|i} \text{lcm}(d_1,d_2) \sum_{j=1}^i [\gcd(i,j)=d_1] \sum_{k=1}^i [\gcd(i,k)=d_2]\\ =&\sum_{i=1}^n \sum_{d_1|i} \sum_{d_2|i} \text{lcm}(d_1,d_2) \varphi(\frac{i}{d_1}) \varphi(\frac{i}{d_2})\\ =&\sum_{i=1}^n \sum_{d_1|i} \sum_{d_2|i} \sum_{d|d_1,d|d_2}\sum_{e|\frac{d_1}{d},e|\frac{d_2}{d}}\mu(e)\cdot e^2\cdot\frac{d_1}{de}\frac{d_2}{de}d \varphi(\frac{i}{d_1}) \varphi(\frac{i}{d_2})\\ =&\sum_{i=1}^n \sum_{d_1|i} \sum_{d_2|i} \sum_{d|d_1,d|d_2}\sum_{e|\frac{d_1}{d},e|\frac{d_2}{d}}\mu(e)\cdot e^2\cdot\frac{d_1}{de}\frac{d_2}{de}d \varphi(\frac{\frac{i}{de}}{\frac{d_1}{de}}) \varphi(\frac{\frac{i}{de}}{\frac{d_2}{de}})\\ =&\sum_{i=1}^n \sum_{d|i} \sum_{e|\frac{i}{d}} d \cdot \mu(e) \cdot e^2 \cdot (\sum_{\frac{d_1}{de}|\frac{i}{de}} \frac{d_1}{de} \varphi(\frac{\frac{i}{de}}{\frac{d_1}{de}}))\\ =& \sum_{i=1}^n \sum_{xyz|i} x \mu(y) \cdot y^2 (\sum_{d|z}d\varphi(\frac{z}{d}))^2\\ =& \sum_{i=1}^n (id*(\mu\cdot id^2)*(id*\varphi)^2)(i)\\ \end{aligned}
========i=1∑nj=1∑ik=1∑ilcm[gcd(i,j),gcd(i,k)]i=1∑nj=1∑ik=1∑id1∣i∑d2∣i∑lcm(d1,d2)[gcd(i,j)=d1][gcd(i,k)=d2]i=1∑nd1∣i∑d2∣i∑lcm(d1,d2)j=1∑i[gcd(i,j)=d1]k=1∑i[gcd(i,k)=d2]i=1∑nd1∣i∑d2∣i∑lcm(d1,d2)φ(d1i)φ(d2i)i=1∑nd1∣i∑d2∣i∑d∣d1,d∣d2∑e∣dd1,e∣dd2∑μ(e)⋅e2⋅ded1ded2dφ(d1i)φ(d2i)i=1∑nd1∣i∑d2∣i∑d∣d1,d∣d2∑e∣dd1,e∣dd2∑μ(e)⋅e2⋅ded1ded2dφ(ded1dei)φ(ded2dei)i=1∑nd∣i∑e∣di∑d⋅μ(e)⋅e2⋅(ded1∣dei∑ded1φ(ded1dei))i=1∑nxyz∣i∑xμ(y)⋅y2(d∣z∑dφ(dz))2i=1∑n(id∗(μ⋅id2)∗(id∗φ)2)(i)
设
g
=
i
d
∗
(
μ
⋅
i
d
2
)
g=id*(\mu\cdot id^2)
g=id∗(μ⋅id2),
h
=
i
d
∗
φ
h=id*\varphi
h=id∗φ,则有
g
(
p
k
)
=
p
k
(
1
−
p
)
g(p^k)=p^k(1-p)
g(pk)=pk(1−p)
h ( p k ) = ( k + 1 ) p k − k p k − 1 h(p^k)=(k+1)p^k-kp^{k-1} h(pk)=(k+1)pk−kpk−1
因此可以推出,
f
(
p
k
)
=
(
2
k
+
1
)
(
p
2
k
−
p
2
k
−
1
)
+
p
k
−
1
f(p^k)=(2k+1)(p^{2k}-p^{2k-1})+p^{k-1}
f(pk)=(2k+1)(p2k−p2k−1)+pk−1
通过 min_25
筛进行求和即可。