和式简单推倒技巧

整除枚举变换为区间枚举#

dnd=i=1n[in]i

我们枚举的东西叫做指标,例如上面的 di

指标变换(重要!!!)#

给定一个整数 d,对于下面这种和式,我们就可以变换指标。

i=1nj=1n[gcd(i,j)=d]

我们令 i=id,j=jd

由于后面艾弗森括号中要求 i,j 都包含因子 d,如果枚举的 i,j 不都是 d 的倍数时不会产生贡献。

所以我们可以不一个一个地枚举 i,j,而是直接枚举 d 的倍数,有:

id=1njd=1n[gcd(id,jd)=d]

然后可以变换枚举范围,这里 i 的起点本来应该是 1d,但是 0 的情况没有必要讨论,所以我们从 1 开始。

因为我们后面的艾弗森括号只有 10 两种取值,也就是说我们统计的只是公约数为 d 的数对个数,所以可以进行以下的变换。

i=1ndj=1nd[gcd(i,j)=1]

那么现在我们发现后面艾弗森括号里面的东西可以通过 μI=ε 进行莫比乌斯函数。


下面的部分和莫比乌斯反演有关。

交换求和次序#

刚才那个式子可以利用莫比乌斯函数性质转化成下面这样

i=1ndj=1ndk|gcd(i,j)μ(k)

这个 kgcd(i,j) 等价于 [ki][kj],即 k 同时是 ij 的因子。

那么我们可以把式子转化为:

i=1ndj=1ndk=1nd[ki][kj] μ(k)

k 的取值与 i,j 无关,我们可以把 μ(k) 提到前面去。

k=1ndμ(k)i=1nd[ki]j=1nd[kj]

转换为整除分块形式#

对于上面的式子,我们可以把后面两部分进行整除分块。

i=1n[di]=nd

这个式子表示的是,当 d 确定时,区间 [1,n] 中有多少个整数是 d 的倍数,即 nd 个。

END

作者:白简

出处:https://www.cnblogs.com/baijian0212/p/sum-trick.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   -白简-  阅读(56)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示