n∑i=1m∑j=1lcm(i,j)=n∑i=1m∑j=1∑k|i,j[gcd(i,j)=k]×ijk=min(n,m)∑kk×nk∑i=1imk∑j=1j×[gcd(i,j)=1]=min(n,m)∑kk×nk∑i=1imk∑j=1j∑e|i,jμ(e)=min(n,m)∑kk×min(nk,mk)∑eμ(e)×nke∑i=1mke∑j=1ij=min(n,m)∑kk×min(nk,mk)∑eμ(e)(1+⌊nke⌋)×⌊nke⌋2(1+⌊mke⌋)×⌊mke⌋2
数论分块套数论分块即可
n∑i=1m∑j=1d(ij)=n∑i=1m∑j=1∑x|i∑y|j[gcd(x,y)=1]=n∑xm∑y[gcd(x,y)=1]nx∑imy∑j1=n∑xm∑y[gcd(x,y)=1]⌊nx⌋⌊ny⌋=n∑xm∑y⌊nx⌋⌊ny⌋[gcd(x,y)=1]=n∑xm∑y⌊nx⌋⌊my⌋∑i|x,yμ(i)=min(n,m)∑iμ(i)ni∑xmi∑y⌊nxi⌋⌊myi⌋=min(n,m)∑iμ(i)ni∑x⌊nxi⌋mi∑y⌊myi⌋=min(n,m)∑iμ(i)(ni∑x⌊nxi⌋)(mi∑y⌊myi⌋)
预处理 i∑j=1⌊ij⌋ 再套数论分块即可
a∑i=1b∑j=1[gcd(i,j)=d]=ad∑i=1bd∑j=1[gcd(i,j)=1]=ad∑i=1bd∑j=1∑e|i,jμ(e)=min(ad,bd)∑e=1μ(e)aed∑i=1bed∑j=11=min(ad,bd)∑e=1μ(e)⌊aed⌋⌊bed⌋
直接数论分块即可
原问题即求
(2×n∑i=1m∑j=1gcd(i,j))−nm
其中
n∑i=1m∑j=1gcd(i,j)=n∑i=1m∑j=1min(n,m)∑k=1k[gcd(i,j)=k]=min(n,m)∑k=1k×n∑i=1m∑j=1[gcd(i,j)=k]=min(n,m)∑k=1k×nk∑i=1mk∑j=1[gcd(i,j)=1]=min(n,m)∑k=1k×nk∑i=1mk∑j=1∑e|i,jμ(e)=min(n,m)∑k=1k×min(n,m)k∑e=1μ(e)nke∑i=1mke∑j=11=min(n,m)∑k=1k×min(n,m)k∑e=1μ(e)⌊nke⌋⌊mke⌋
数论分块套数论分块即可
令 number(i)=∑n−1j=0[Aj=i] , m=maxn−1j=0(Aj)
n−2∑i=0 n−1∑j=i+1 lcm(Ai,Aj)=(m∑i=1m∑j=1lcm(i,j)×number(i)×number(j))−n−1∑i=0Ai2
其中
m∑i=1m∑j=1lcm(i,j)×number(i)×number(j)=m∑i=1m∑j=1number(i)×number(j)×ijgcd(i,j)=m∑i=1m∑j=1number(i)×number(j)×m∑kijk[gcd(i,j)=k]=m∑km∑i=1m∑j=1number(i)×number(j)×ijk[gcd(i,j)=k]=m∑kk×mk∑i=1mk∑j=1number(ik)×number(jk)×ij[gcd(i,j)=1]=m∑kk×mk∑i=1mk∑j=1number(ik)×number(jk)×ij∑e|i,jμ(e)=m∑kk×mk∑eμ(e)×e2mke∑i=1mke∑j=1number(ike)×number(jke)×ij=m∑eμ(e)×e2me∑kk×mke∑i=1mke∑j=1number(ike)×number(jke)×ij=m∑eμ(e)×e2me∑kk×mke∑i=1number(ike)×imke∑j=1number(jke)×j=m∑eμ(e)×e2me∑kk×(mke∑i=1number(ike)×i)2
对于每个 ke 记录 mke∑i=1number(ike)×i , 枚举 e 和 k, 看似会超时实则调和级数加主定理
考虑没有限制, 则原题为
n∑i=1m∑j=1∑k|i,jk=n∑i=1m∑j=1∑k|gcd(i,j)k=n∑i=1m∑j=1σ(gcd(i,j))=n∑i=1m∑j=1min(n,m)∑k=1σ(k)[gcd(i,j)=k]=min(n,m)∑k=1nk∑i=1mk∑j=1σ(k)[gcd(i,j)=1]=min(n,m)∑k=1σ(k)nk∑i=1mk∑j=1∑e|i,jμ(e)=min(n,m)∑k=1σ(k)min(nk,mk)∑e=1μ(e)nke∑i=1mke∑j=11min(n,m)∑k=1σ(k)min(nk,mk)∑e=1μ(e)⌊nke⌋⌊mke⌋
但这个样子对于不同的 n , m 至少要用 O(n√n) 的时间求解, 不满足多组询问的要求, 所以考虑变换, 将常数项往后提
∴min(n,m)∑k=1σ(k)min(nk,mk)∑e=1μ(e)⌊nke⌋⌊mke⌋=min(n,m)∑i⌊ni⌋⌊mi⌋∑k|iσ(k)μ(ik)
这里可以考虑对不同的 i 维护 ∑k|iσ(k)μ(ik) , 并对 i 求前缀和, 这样对于一次操作我们就可以用 O(√n) 的时间复杂度去求解。 再考虑题目限制, 即要求 σ(k) 不能超过 a , 那么我们考虑对所有会参与计算的 σ(k)μ(ik) 排序, 因为调和级数, 所以这里时间复杂度是 O(nlog2n) 的, 然后再对询问的 a 排序, 那么每次只会增加一些 σ(k)μ(ik) 可以产生贡献, 我们把刚才的前缀和改为 BIT , 每次就在上面修改和查询即可, 时间复杂度 O(q√nlogn+nlog2n)
__EOF__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】