【题解】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/d∑j=1m/di∗j∗[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=1n∑j=1mi∗j∗[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/d∑j=1m/d(i∗j))
涉及到 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=1n∑j=1m(i∗j)
显然 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)/2∗m∗(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)∗d2∗f(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=1nd∗sum(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)∗g2∗f(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)=∑d∣nμ(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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」