LibreOJ - 6053(积性函数前缀和,pn筛角度)
Posted 吃花椒的妙酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LibreOJ - 6053(积性函数前缀和,pn筛角度)相关的知识,希望对你有一定的参考价值。
题意: 以上是关于LibreOJ - 6053(积性函数前缀和,pn筛角度)的主要内容,如果未能解决你的问题,请参考以下文章
n<=1e10
思路: 积性函数性质,pn筛角度
易知f(i)是积性函数。
设
f
=
g
∗
h
,
其中
∗
表示狄利克雷卷积
f = g*h,其中*表示狄利克雷卷积
f=g∗h,其中∗表示狄利克雷卷积
试着构造一下h和g,由于
f
(
p
)
=
p
−
1
=
φ
(
p
)
,
p
>
2
p
+
1
,
p
=
2
f(p)=\\begincasesp-1=\\varphi(p)&,p>2\\\\p+1&,p=2\\endcases
f(p)=p−1=φ(p)p+1,p>2,p=2
考虑p=2时,f固定有f(2^k)的贡献,构造
g
(
x
)
=
φ
(
x
)
,
x
∤
2
3
φ
(
x
)
,
x
∣
2
g(x)=\\begincases\\varphi(x)&,x\\nmid2\\\\3\\varphi(x)&,x\\mid2\\endcases
g(x)=φ(x)3φ(x),x∤2,x∣2
由积性函数定义,有
f
(
p
)
=
h
(
p
)
g
(
1
)
+
h
(
1
)
g
(
h
)
和
f
(
1
)
=
h
(
1
)
g
(
1
)
,
而
h
(
p
)
=
f
(
p
)
,
所以
h
(
p
)
=
0
,
h
(
1
)
=
1
f(p)=h(p)g(1)+h(1)g(h)和f(1)=h(1)g(1),而h(p)=f(p),所以h(p)=0,h(1)=1
f(p)=h(p)g(1)+h(1)g(h)和f(1)=h(1)g(1),而h(p)=f(p),所以h(p)=0,h(1)=1。
也就是说h(x)只可能在x为powerful number时取到非零数,而pn数量级是
n
\\sqrtn
n的,考虑pn筛。
∑
i
=
1
n
f
(
i
)
=
∑
i
=
1
n
h
(
i
)
∑
j
=
1
⌊
n
i
⌋
g
(
j
)
\\sum_i=1^nf(i)=\\sum_i=1^nh(i)\\sum_j=1^\\lfloor\\fracni\\rfloorg(j)
∑i=1nf(i)=∑i=1nh(i)∑j=1⌊in⌋g(j)
接下来是g(i)的前缀和如何快速求
∑
i
=
1
n
g
(
i
)
=
∑
i
=
1
n
φ
(
i
)
+
2
∑
i
=
1
⌊
n
2
⌋
φ
(
2
i
)
\\sum_i=1^ng(i) =\\sum_i=1^n\\varphi(i)+2\\sum_i=1^\\lfloor\\fracn2\\rfloor\\varphi(2i)
∑i=1ng(i)=∑i=1nφ(i)+2∑i=1⌊2n⌋φ(2i),前半部分用杜教筛可以在
O
(
n
2
3
)
解决。
O(n^\\frac23)解决。
O(n32)解决。
现在解决后面的求和问题,我们设
S
(
n
)
=
∑
i
=
1
n
φ
(
2
i
)
S(n)=\\sum_i=1^n\\varphi(2i)
S(n)=∑i=1nφ(2i)
利用积性函数性质并且尽量往前缀和上靠
当n为偶数时,考虑把
φ
(
2
i
)
的
i
分为奇数和偶数两部分求和
\\varphi(2i)的i分为奇数和偶数两部分求和
φ(2i)的i分为奇数和偶数两部分求和
S
(
n
)
=
∑
i
=
1
n
2
(
φ
(
2
i
)
+
φ
(
2
(
n
+
i
)
)
=
∑
i
=
1
n
2
(
φ
(
2
(
2
i
−
1
)
)
+
φ
(
2
∗
2
i
)
)
=
∑
i
=
1
n
2
(
φ
(
2
i
−
1
)
+
2
φ
(
2
i
)
)
=
∑
i
=
1
n
2
(
φ
(
2
i
−
1
)
+
φ
(
2
i
)
)
+
∑
i
=
1
n
2
φ
(
2
i
)
=
∑
i
=
1
n
φ
(
i
)
+
S
(
n
2
)
S(n)=\\sum_i=1^\\fracn2(\\varphi(2i)+\\varphi(2(n+i))\\\\=\\sum_i=1^\\fracn2(\\varphi(2(2i-1))+\\varphi(2*2i))\\\\=\\sum_i=1^\\fracn2(\\varphi(2i-1)+2\\varphi(2i))\\\\=\\sum_i=1^\\fracn2(\\varphi(2i-1)+\\varphi(2i))+\\sum_i=1^\\fracn2\\varphi(2i)\\\\=\\sum_i=1^n\\varphi(i)+S(\\fracn2)
S(n)=∑i=12n(φ(2i)+φ(2(n+i))=∑i=12n(φ(2(2i−1))+φ(2∗2i))=∑i=12n(φ(2i−1)+2φ(2i))=∑i=12n(φ(2i−1)+φ(2i))+∑i=12nφ(2i)=∑i=1nφ(i)+S(2n)
当n为奇数时,考虑往上面的式子转化
S
(
n
)
=
S
(
n
−
1
)
+
φ
(
2
n
)
S(n)=S(n-1)+\\varphi(2n)
S(n)=S(n−1)+φ(2n),而S(n-1)上面已经推出来了
继续化简
S
(
n
)
=
S
(
n
−
1
2
)
+
∑
i
=
1
n
−
1
φ
(
i
)
+
φ
(
2
n
)
=
S
(
n
−
1
2
)
+
∑
i
=
1
n
−
1
φ
(
i
)
+
φ
(
n
)
(
2
和
n
互质
)
=
S
(
n
−
1
2
)
+
∑
i
=
1
n
φ
(
i
)
S(n)=S(\\fracn-12)+\\sum_i=1^n-1\\varphi(i)+\\varphi(2n)\\\\=S(\\fracn-12)+\\sum_i