P3768简单的数学题——从莫比乌斯反演到欧拉反演

Description

∑ i = 1 n ∑ j = 1 n i j gcd ⁡ ( i , , j ) \sum_{i=1}^n \sum_{j=1}^n ij \gcd(i,,j) i=1nj=1nijgcd(i,,j)的值。

请将答案对 P ( 5 × 1 0 8 ≤ P ≤ 1.1 × 1 0 9 ) P(5×10^8≤P≤1.1×10^9) P(5×108P1.1×109)取模。

Solution

∑ i = 1 n ∑ j = 1 n i j gcd ⁡ ( i , j ) \sum_{i=1}^n \sum_{j=1}^n ij \gcd(i,j) i=1nj=1nijgcd(i,j)

= ∑ k = 1 n k ∑ i = 1 n ∑ j = 1 n i j [ gcd ⁡ ( i , j ) = k ] =\sum_{k=1}^n k \sum_{i=1}^n \sum_{j=1}^n ij [\gcd(i,j)=k] =k=1nki=1nj=1nij[gcd(i,j)=k]

= ∑ k = 1 n k 3 ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ n k ⌋ i j [ gcd ⁡ ( i , j ) = 1 ] =\sum_{k=1}^n k^3 \sum_{i=1}^{\lfloor \frac n k \rfloor} \sum_{j=1}^{\lfloor \frac n k \rfloor} ij [\gcd(i,j)=1] =k=1nk3i=1knj=1knij[gcd(i,j)=1]

第二个 ∑ \sum 前面的系数为什么是 k 3 k^3 k3呢?因为,后面所有的 i j ij ij都被减小了 k k k倍(因此变成了 [ gcd ⁡ ( i , j ) ] = 1 [\gcd(i,j)]=1 [gcd(i,j)]=1),以及它原来的系数 k k k,所以新系数应该是 k × k × k = k 3 k×k×k=k^3 k×k×k=k3

继续推式子:

= ∑ k = 1 n k 3 ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ n k ⌋ i j [ gcd ⁡ ( i , j ) = 1 ] =\sum_{k=1}^n k^3 \sum_{i=1}^{\lfloor \frac n k \rfloor} \sum_{j=1}^{\lfloor \frac n k \rfloor} ij [\gcd(i,j)=1] =k=1nk3i=1knj=1knij[gcd(i,j)=1]

= ∑ k = 1 n k 3 ∑ i = 1 ⌊ n k ⌋ i ∑ j = 1 ⌊ n k ⌋ j [ gcd ⁡ ( i , j ) = 1 ] =\sum_{k=1}^n k^3 \sum_{i=1}^{\lfloor \frac n k \rfloor} i \sum_{j=1}^{\lfloor \frac n k \rfloor} j [\gcd(i,j)=1] =k=1nk3i=1knij=1knj[gcd(i,j)=1]

可以发现,第三个 ∑ \sum 实际要计算所有不大于 i i i且与 i i i互质的数之和。根据 gcd ⁡ ( i , j ) = gcd ⁡ ( i , i − j ) \gcd(i,j)=\gcd(i,i-j) gcd(i,j)=gcd(i,ij),可以发现,与 i i i互质的数能够形成和为 n n n φ n 2 \frac {\varphi n} 2 2φn对。所以这些数的和为 n φ n 2 \frac {n\varphi n} 2 2nφn

带入,得

= ∑ k = 1 n k 3   2 ∑ i = 1 ⌊ n k ⌋ i × i ∗ φ ( i ) 2 =\sum_{k=1}^n k^3\ 2\sum_{i=1}^{\lfloor \frac n k \rfloor} i×\frac {i*\varphi(i)} 2 =k=1nk3 2i=1kni×2iφ(i)

之所以这里要乘上一个 2 2 2,是因为 ( 3 , 5 ) ( 5 , 3 ) (3,5)(5,3) (3,5)(5,3)是要被算 2 2 2次的,但实则只被算了 1 1 1次。我们抵消掉里面的那个 2 2 2,可以得到:

= ∑ k = 1 n k 3   ∑ i = 1 ⌊ n k ⌋ i 2 ∗ φ ( i ) =\sum_{k=1}^n k^3\ \sum_{i=1}^{\lfloor \frac n k \rfloor} {i^2}*\varphi(i) =k=1nk3 i=1kni2φ(i)

于是,我们 O ( n ) O(n) O(n)处理出 i 2 × φ ( i ) i^2×\varphi(i) i2×φ(i)的前缀和,然后做一遍整除分块计算此式即可。

总时间复杂度 O ( n ) O(n) O(n),无法通过本题。


可以发现,第二个 ∑ \sum 里面是一个前缀和的形式……是否能用杜教筛优化呢?
答案是可以的。设第一个函数为 f ( x ) = x 2 φ ( x ) f(x)=x^2 \varphi(x) f(x)=x2φ(x),第二个函数为 g ( x ) g(x) g(x),考虑它们卷积的形式

∑ x ∣ d f ( x ) g ( d x ) \sum_{x|d} f(x) g(\frac d x) xdf(x)g(xd)

由于 f ( x ) = x 2 φ ( x ) f(x)=x^2 \varphi(x) f(x)=x2φ(x),其中的那个 x 2 x^2 x2看起来很难看,我们尝试把它消掉。令 g ( x ) = x 2 g(x)=x^2 g(x)=x2即可。

∑ x ∣ d f ( x ) g ( d x ) \sum_{x|d} f(x) g(\frac d x) xdf(x)g(xd)

= ∑ x ∣ d x 2 φ ( x ) ( d x ) 2 =\sum_{x|d} x^2 \varphi(x) (\frac d x)^2 =xdx2φ(x)(xd)2

= n 2 ∑ x ∣ d φ ( x ) =n^2 \sum_{x|d} \varphi(x) =n2xdφ(x)

由于 φ ∗ I = i d \varphi*I=id φI=id,这个式子可以被进一步简写为 n 3 n^3 n3

根据杜教筛的套路,我们只需要快速计算 f × g f×g f×g的前缀和以及 g g g的前缀和即可快速计算 f f f的前缀和。前者相当于三次方和,后者相当于平方和,可以套用下面的公式进行计算:

∑ i = 1 n i 2 = i ( i + 1 ) ( 2 i + 1 ) 6 \sum_{i=1}^n i^2=\frac {i(i+1)(2i+1)} 6 i=1ni2=6i(i+1)(2i+1)
∑ i = 1 n i 3 = ( i 2 ( i + 1 ) 2 ) 4 \sum_{i=1}^n i^3=\frac {(i^2(i+1)^2)} 4 i=1ni3=4(i2(i+1)2)

通过线性筛筛出前 2 n 2 3 2n^{\frac 2 3} 2n32 3 n 2 3 3n^{\frac 2 3} 3n32个答案时复杂度最优,常数最小。

总时间复杂度 O ( n 2 3 ) O(n^{\frac 2 3}) O(n32)

Summary

可以说每一步都是套路。

首先,我们使用了欧拉反演,将式子化为了 ∑ k = 1 n k 3   ∑ i = 1 ⌊ n k ⌋ i 2 ∗ φ ( i ) \sum_{k=1}^n k^3\ \sum_{i=1}^{\lfloor \frac n k \rfloor} {i^2}*\varphi(i) k=1nk3 i=1kni2φ(i);然后,我们成功构造出了 g g g函数,使得杜教筛有了用武之地。

有时,莫比乌斯反演或许很可爱,但是转变一下思想,使用欧拉反演,也许式子会被简化得更美妙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值