关于一些函数求前缀和的问题

1. f ( n ) 为n的因子的和,求:

i = 1 n f ( i )

其中 n < 10 12

做法其实也是常见的套路:

a n s = i n j n [ j | i ] j = j n j i n [ j | i ] = j = 1 n n j

这个就很显然了,分块求就行了,复杂度 O ( n )

2.有欧拉函数 ϕ ( x ) ,求:

i = 1 n ϕ ( i )

其中 n < 10 11
这个之前讲过了,杜教筛套路一波。复杂度 O ( n 2 3 )

3.有莫比乌斯函数 μ ( x ) ,求:

i = 1 n μ ( i )

其中 n < 10 11
同样杜教筛套路一波。复杂度 O ( n 2 3 )

4.设:

f ( n ) = i = 1 n i g c d ( n , i ) F ( n ) = i = 1 n f ( i )

求: F ( n ) % ( 10 9 + 7 ) , n < 10 9

则:

f ( n ) = i = 1 n d | n [ g c d ( i , n ) == d ] i d = d | n n d | i n [ g c d ( i , n ) == d ] i d = d | n n d | i n d [ g c d ( i d , n d ) == 1 ] i d = d | n n k n d [ g c d ( k , n d ) == 1 ] k

可以发现 里面的和式其实就是欧拉函数 ϕ ( x ) 里所有与x互质的数的和设为 h ( x )
则:
f ( n ) = d | n h ( n d ) = d | n h ( d ) = 1 2 ( 1 + d | n d ϕ ( d ) )

所以:
F ( n ) = i = 1 n 1 2 ( 1 + d | i d ϕ ( d ) ) = n 2 + 1 2 i = 1 n d | i d ϕ ( d )

设:

g ( n ) = i = 1 n d | i d ϕ ( d )

实际上就是求 g ( n ) ,则:
g ( n ) = i = 1 n d | i d ϕ ( d ) = i = 1 n d = 1 n i d ϕ ( d )

发现不是很好搞阿。。。
ϕ ( n ) = n ϕ ( n ) ,容易验证 ϕ ( n ) 是积性函数。
里面有类似的狄利克雷卷积的结构,能不能找另一个积性函数和他卷一卷?

猜你喜欢

转载自blog.csdn.net/Coldfresh/article/details/81191836
今日推荐