杜教筛

杜教筛

求积性函数 f(x) f ( x ) 的前缀和 S(n)=ni=1f(i) S ( n ) = ∑ i = 1 n f ( i )

狄利克雷卷积:

(gf)(x)=d|xg(d)f(xd) ( g ∗ f ) ( x ) = ∑ d | x g ( d ) f ( x d )

x=1n(gf)(x)=x=1nd|xg(d)f(xd) ∑ x = 1 n ( g ∗ f ) ( x ) = ∑ x = 1 n ∑ d | x g ( d ) f ( x d )

=d=1nd|xng(d)f(xd) = ∑ d = 1 n ∑ d | x n g ( d ) f ( x d )

=d=1ng(d)x=1n/df(x) = ∑ d = 1 n g ( d ) ∑ x = 1 n / d f ( x )

=d=1ng(d)S(nd) = ∑ d = 1 n g ( d ) S ( ⌊ n d ⌋ )


x=1n(gf)(x)=d=1ng(d)S(nd) ∑ x = 1 n ( g ∗ f ) ( x ) = ∑ d = 1 n g ( d ) S ( ⌊ n d ⌋ )

我们有

g(1)S(n)=i=1ng(i)S(ni)i=2ng(i)S(ni) g ( 1 ) S ( n ) = ∑ i = 1 n g ( i ) S ( ⌊ n i ⌋ ) − ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ )

g(1)S(n)=i=1n(gf)(i)i=2ng(i)S(ni) g ( 1 ) S ( n ) = ∑ i = 1 n ( g ∗ f ) ( i ) − ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ )


假设我们要求 S(n)=ni=1μ(i) S ( n ) = ∑ i = 1 n μ ( i )

我们只需要找出 g(x) g ( x ) 使得 (gf)(x) ( g ∗ f ) ( x ) 的前缀和好算就可以了
我们知道

d|nμ(d)=[n=1] ∑ d | n μ ( d ) = [ n = 1 ]

那么我们可以设 g(x)=1 g ( x ) = 1
这样的话

(gf)(x)=d|xf(d)g(dx)=[x=1] ( g ∗ f ) ( x ) = ∑ d | x f ( d ) g ( d x ) = [ x = 1 ]

i=1x(gf)(x)=1 ∑ i = 1 x ( g ∗ f ) ( x ) = 1

g(1)S(n)=1i=2nS(ni) g ( 1 ) S ( n ) = 1 − ∑ i = 2 n S ( ⌊ n i ⌋ )

后面的部分可以数论分块
首先先线性筛出前面一部分( 1000000 1000000 μ(x) μ ( x ) 的前缀和,后面记忆化搜索即可


再假设我们要求 S(n)=ni=1ϕ(i) S ( n ) = ∑ i = 1 n ϕ ( i )

我们知道

d|nϕ(d)=n ∑ d | n ϕ ( d ) = n

(gf)(x)=d|xf(d)g(xd) ( g ∗ f ) ( x ) = ∑ d | x f ( d ) g ( x d )

我们发现如果令 g(x)=1 g ( x ) = 1

(gf)(x)=d|xf(d)=x ( g ∗ f ) ( x ) = ∑ d | x f ( d ) = x

g(1)S(n)=i=1nii=2ng(i)S(ni) g ( 1 ) S ( n ) = ∑ i = 1 n i − ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ )

S(n)=x(x+1)2i=2nS(ni) S ( n ) = x ( x + 1 ) 2 − ∑ i = 2 n S ( ⌊ n i ⌋ )


51nod1238 最小公倍数之和V3


i=1nj=1nlcm(i,j) ∑ i = 1 n ∑ j = 1 n l c m ( i , j )


ans=i=1nj=1nijgcd(i,j) a n s = ∑ i = 1 n ∑ j = 1 n i j g c d ( i , j )

=d=1n1di=1nj=1nij [gcd(i,j)=d] = ∑ d = 1 n 1 d ∑ i = 1 n ∑ j = 1 n i j   [ g c d ( i , j ) = d ]

=d=1n1di=1n/dj=1n/did jd [gcd(i,j)=1] = ∑ d = 1 n 1 d ∑ i = 1 n / d ∑ j = 1 n / d i d   j d   [ g c d ( i , j ) = 1 ]

=d=1ndi=1n/dj=1n/dij [gcd(i,j)=1] = ∑ d = 1 n d ∑ i = 1 n / d ∑ j = 1 n / d i j   [ g c d ( i , j ) = 1 ]

f(x)=i=1xj=1xij[gcd(i,j)=1] f ( x ) = ∑ i = 1 x ∑ j = 1 x i j [ g c d ( i , j ) = 1 ]

=2(i=1xij=1ij[gcd(i,j)=1])1 = 2 ( ∑ i = 1 x i ∑ j = 1 i j [ g c d ( i , j ) = 1 ] ) − 1

=2(i=1xi iϕ(i)+[i=1]2)1 = 2 ( ∑ i = 1 x i   i ϕ ( i ) + [ i = 1 ] 2 ) − 1

=(i=1xi2 ϕ(i)+[i=1])1 = ( ∑ i = 1 x i 2   ϕ ( i ) + [ i = 1 ] ) − 1

=i=1xi2 ϕ(i) = ∑ i = 1 x i 2   ϕ ( i )

代回原式子

ans=d=1ndi=1n/di2 ϕ(i) a n s = ∑ d = 1 n d ∑ i = 1 n / d i 2   ϕ ( i )

S(n)=i=1ni2 ϕ(i) S ( n ) = ∑ i = 1 n i 2   ϕ ( i )

S(n)=i=1n(gf)(i)i=2ng(i)S(ni) S ( n ) = ∑ i = 1 n ( g ∗ f ) ( i ) − ∑ i = 2 n g ( i ) S ( n i )

推一下卷积

i=1n(gf)(x)=i=1nd|if(d)g(id) ∑ i = 1 n ( g ∗ f ) ( x ) = ∑ i = 1 n ∑ d | i f ( d ) g ( i d )

=i=1nd|id2ϕ(d)g(id) = ∑ i = 1 n ∑ d | i d 2 ϕ ( d ) g ( i d )

我们发现设 g(x)=x2 g ( x ) = x 2 就可以把 d2 d 2 约掉

=i=1nd|id2ϕ(d)i2d2 = ∑ i = 1 n ∑ d | i d 2 ϕ ( d ) i 2 d 2

=i=1ni2d|iϕ(d) = ∑ i = 1 n i 2 ∑ d | i ϕ ( d )

=i=1ni3 = ∑ i = 1 n i 3

=(n(n+1)2)2 = ( n ( n + 1 ) 2 ) 2

g(1)S(n)=i=1n(gf)(x)i=2ng(i)S(ni) g ( 1 ) S ( n ) = ∑ i = 1 n ( g ∗ f ) ( x ) − ∑ i = 2 n g ( i ) S ( n i )

S(n)=(n(n+1)2)2i=2ni2S(ni) S ( n ) = ( n ( n + 1 ) 2 ) 2 − ∑ i = 2 n i 2 S ( n i )

我们知道

i=1ni2=n(n+1)(2n+1)6 ∑ i = 1 n i 2 = n ( n + 1 ) ( 2 n + 1 ) 6

我们可以杜教筛 S(n) S ( n )

ans=d=1nd S(nd) a n s = ∑ d = 1 n d   S ( n d )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值