【题解】Crash的数字表格

反演好难啊 qwq 。

∑ d = 1 n d ( ∑ i = 1 n / d ∑ j = 1 m / d i ∗ j ∗ [ gcd ⁡ ( i , j ) = = 1 ] ) \sum_{d=1}^nd(\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}i*j*[\gcd(i,j)==1]) d=1nd(i=1n/dj=1m/dij[gcd(i,j)==1])

s u m ( n , m ) = ∑ i = 1 n ∑ j = 1 m i ∗ j ∗ [ gcd ⁡ ( i , j ) = = 1 ] sum(n,m)=\sum_{i=1}^n\sum_{j=1}^mi*j*[\gcd(i,j)==1] sum(n,m)=i=1nj=1mij[gcd(i,j)==1]

由定义可知 s u m ( n , m ) = ∑ d = 1 n μ ( d ) ∗ d 2 ∗ ( ∑ i = 1 n / d ∑ j = 1 m / d ( i ∗ j ) ) sum(n,m)=\sum_{d=1}^n\mu(d)*d^2*(\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}(i*j)) sum(n,m)=d=1nμ(d)d2(i=1n/dj=1m/d(ij))

涉及到 1~n 的乘积求和,设 f ( n , m ) = ∑ i = 1 n ∑ j = 1 m ( i ∗ j ) f(n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m}(i*j) f(n,m)=i=1nj=1m(ij)

显然 f ( n , m ) = n ∗ ( n + 1 ) / 2 ∗ m ∗ ( m + 1 ) / 2 f(n,m)=n*(n+1)/2*m*(m+1)/2 f(n,m)=n(n+1)/2m(m+1)/2

所以 s u m ( n , m ) = ∑ d = 1 n μ ( d ) ∗ d 2 ∗ f ( n / d , m / d ) sum(n,m)=\sum_{d=1}^n\mu(d)*d^2*f(n/d,m/d) sum(n,m)=d=1nμ(d)d2f(n/d,m/d)

要求的是 ∑ d = 1 n d ∗ s u m ( n / d , m / d ) \sum_{d=1}^nd*sum(n/d,m/d) d=1ndsum(n/d,m/d)

整除分块套整除分块 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32) 的做法呼之欲出(这个 sb 玩意为什么我推了一晚上的 n+sqrt 做法没推出来)。

n+sqrt 做法大概需要一个能够预处理的玩意儿。

回到第二步: ∑ d = 1 n d ( ∑ g = 1 n / d μ ( g ) ∗ g 2 ∗ f ( n / d g , m / d g ) ) \sum_{d=1}^nd(\sum_{g=1}^{n/d}\mu(g)*g^2*f(n/dg,m/dg)) d=1nd(g=1n/dμ(g)g2f(n/dg,m/dg))

h ( n ) = ∑ d ∣ n μ ( d ) ∗ d 2 ∗ ( n / d ) h(n)=\sum_{d|n}\mu(d)*d^2*(n/d) h(n)=dnμ(d)d2(n/d) ,积性函数可以 O(n) 预处理哈哈哈

直接求 ∑ T = 1 n f ( n / T , m / T ) ∗ h ( T ) \sum_{T=1}^nf(n/T,m/T)*h(T) T=1nf(n/T,m/T)h(T) 哈哈哈

说明对莫反还是不熟悉 哈哈哈


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530254.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示