51Nod1238最小公倍数之和V3的另一种做法

前面的讲解【Blog地址


题目意思:求
∑ i = 1 n ∑ j = 1 m l c m ( i , j ) \sum_{i=1}^n\sum_{j=1}^mlcm(i,j) i=1nj=1mlcm(i,j)
对于数据范围 n , m ≤ 1 0 10 n,m\leq 10^{10} n,m1010


其实我们前面将式子化简成了:

= ∑ d = 1 n d ∑ w = 1 ⌊ n d ⌋ μ ( w ) w 2 S ( ⌊ n d w ⌋ ) S ( ⌊ n d w ⌋ ) =\sum_{d=1}^nd\sum_{w=1}^{\lfloor\frac{n}{d}\rfloor}\mu(w)w^2S(\left\lfloor\frac{n}{dw}\right\rfloor)S(\left\lfloor\frac{n}{dw}\right\rfloor) =d=1ndw=1dnμ(w)w2S(dwn)S(dwn)

其中 S ( n ) = n × ( n + 1 ) 2 S(n)=\frac{n\times(n+1)}{2} S(n)=2n×(n+1)

其实这个时候我们用杜教筛筛 ∑ i = 1 n μ ( i ) i 2 \sum_{i=1}^n\mu(i)i^2 i=1nμ(i)i2即可在 O ( n 3 4 ) O(n^{\frac{3}{4}}) O(n43)时间内做出(分块套分块再加杜教筛)。

对于 f ( x ) = μ ( x ) x 2 f(x)=\mu(x)x^2 f(x)=μ(x)x2的前缀和 F ( n ) F(n) F(n),我们可以根据杜教筛的套路,令 g ( x ) = x 2 g(x)=x^2 g(x)=x2,那么 h = f ⨂ g h=f\bigotimes g h=fg就等于( ⨂ \bigotimes 为狄利克雷卷积):

= ∑ d ∣ n μ ( d ) d 2 ( n d ) 2 = n 2 ∑ d ∣ n μ ( d ) = n 2 [ n = 1 ] = [ n = 1 ] =\sum_{d|n}\mu(d)d^2\left(\frac{n}{d}\right)^2\\ =n^2\sum_{d|n}\mu(d)\\ =n^2[n=1]\\ =[n=1] =dnμ(d)d2(dn)2=n2dnμ(d)=n2[n=1]=[n=1]

此时带入杜教筛公式即可得,其中后面要除以 g ( 1 ) g(1) g(1),但因为 g ( 1 ) = 1 g(1)=1 g(1)=1这里略去:

F ( n ) = ∑ i = 1 n h ( i ) − ∑ i = 2 n g ( i ) F ( ⌊ n i ⌋ ) = 1 − ∑ i = 2 n i 2 F ( ⌊ n i ⌋ ) F(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^ng(i)F(\left\lfloor\frac{n}{i}\right\rfloor)\\ =1-\sum_{i=2}^ni^2F(\left\lfloor\frac{n}{i}\right\rfloor) F(n)=i=1nh(i)i=2ng(i)F(in)=1i=2ni2F(in)

就可以直接递归筛了。


但是我们可以继续看,转而枚举乘积 d w dw dw,令 T = d w T=dw T=dw则可以得到原式等于:

= ∑ T = 1 n S ( ⌊ n T ⌋ ) S ( ⌊ m T ⌋ ) ∑ d ∣ T n μ ( d ) d 2 ( T d ) = ∑ T = 1 n S ( ⌊ n T ⌋ ) S ( ⌊ m T ⌋ ) T ∑ d ∣ T μ ( d ) d =\sum_{T=1}^nS(\left\lfloor\frac{n}{T}\right\rfloor)S(\left\lfloor\frac{m}{T}\right\rfloor)\sum_{d|T}^n\mu(d)d^2\left(\frac{T}{d}\right)\\ =\sum_{T=1}^nS(\left\lfloor\frac{n}{T}\right\rfloor)S(\left\lfloor\frac{m}{T}\right\rfloor)T\sum_{d|T}\mu(d)d\\ =T=1nS(Tn)S(Tm)dTnμ(d)d2(dT)=T=1nS(Tn)S(Tm)TdTμ(d)d

那么我们只需要杜教筛出后面 T ∑ d ∣ T μ ( d ) d T\sum_{d|T}\mu(d)d TdTμ(d)d即可分块加杜教筛,在 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)的时间内做出。

但是如何筛后面的那个呢?

我们来看,现在相当于求这个式子:

∑ d = 1 n d ∑ w ∣ d μ ( w ) w \sum_{d=1}^nd\sum_{w|d}\mu(w)w d=1ndwdμ(w)w

由于前面的式子和现在这个求出来的值是一样的,也就是:

∑ d = 1 n d ∑ w = 1 ⌊ n d ⌋ μ ( w ) w 2 S ( ⌊ n d w ⌋ ) S ( ⌊ n d w ⌋ ) = ∑ T = 1 n S ( ⌊ n T ⌋ ) S ( ⌊ m T ⌋ ) T ∑ d ∣ T μ ( d ) d \sum_{d=1}^nd\sum_{w=1}^{\lfloor\frac{n}{d}\rfloor}\mu(w)w^2S(\left\lfloor\frac{n}{dw}\right\rfloor)S(\left\lfloor\frac{n}{dw}\right\rfloor)=\sum_{T=1}^nS(\left\lfloor\frac{n}{T}\right\rfloor)S(\left\lfloor\frac{m}{T}\right\rfloor)T\sum_{d|T}\mu(d)d d=1ndw=1dnμ(w)w2S(dwn)S(dwn)=T=1nS(Tn)S(Tm)TdTμ(d)d

所以我们可以将 S S S相同的部分减去,那么剩下就是:

∑ d = 1 n d ∑ w = 1 ⌊ n d ⌋ μ ( w ) w 2 = ∑ T = 1 n T ∑ d ∣ T μ ( d ) d \sum_{d=1}^nd\sum_{w=1}^{\lfloor\frac{n}{d}\rfloor}\mu(w)w^2=\sum_{T=1}^nT\sum_{d|T}\mu(d)d d=1ndw=1dnμ(w)w2=T=1nTdTμ(d)d

所以相当于筛前面的那个东西,我们预处理线性筛出一部分 ∑ T = 1 n T ∑ d ∣ T μ ( d ) d \sum_{T=1}^nT\sum_{d|T}\mu(d)d T=1nTdTμ(d)d的这个,然后用杜教筛加分块继续求前面的那个即可。

另外一种解释:
相当于我们后面需要杜教筛的 d ∑ w ∣ d μ ( w ) w = ∑ w ∣ d μ ( w ) w 2 d w d\sum_{w|d}\mu(w)w=\sum_{w|d}\mu(w)w^2\frac{d}{w} dwdμ(w)w=wdμ(w)w2wd
写成狄利克雷卷积的形式就是 ( i d 2 ⋅ μ ) ⨂ i d (id^2\cdot\mu)\bigotimes id (id2μ)id,我们令 f = ( i d 2 ⋅ μ ) ⨂ i d , g = i d 2 f=(id^2\cdot\mu)\bigotimes id,g=id^2 f=(id2μ)id,g=id2,那么 f ⨂ g = ( i d 2 ⋅ μ ) ⨂ i d ⨂ i d 2 f\bigotimes g=(id^2\cdot\mu)\bigotimes id\bigotimes id^2 fg=(id2μ)idid2,交换一下就是 ( i d 2 ⋅ μ ) ⨂ i d 2 ⨂ i d (id^2\cdot\mu)\bigotimes id^2\bigotimes id (id2μ)id2id,前两个卷出来就是 ϵ \epsilon ϵ,然后原式就变成 ϵ ⨂ i d = i d \epsilon\bigotimes id=id ϵid=id,然后杜教筛即可。
公式即为:
F ( n ) = ∑ i = 1 n i − ∑ i = 2 n i 2 F ( ⌊ n i ⌋ ) F(n)=\sum_{i=1}^ni-\sum_{i=2}^ni^2F(\lfloor\frac{n}{i}\rfloor) F(n)=i=1nii=2ni2F(in)

我觉得上面这种更好


代码,咕咕咕


参考资料博客:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VictoryCzt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值