其他分享
首页 > 其他分享> > 计算 gcd(i,j)=k 的对数

计算 gcd(i,j)=k 的对数

作者:互联网

计算 \(\gcd(i,j)=k\) 的对数

Problem

\[\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k] \]

Solution

设 \(f(k)\) 表示 \(\gcd(i,j)==k\) 的对数(即答案),\(g(k)\) 表示 \(k|\gcd(i,j)\) 的对数

根据 \(g\) 的定义,我们知道:\(g(k)=\lfloor\frac nk\rfloor\lfloor\frac mk\rfloor\)

而且显然有 \(g(k)=\sum_{i=1}^{\frac nk}f(i\times k)\)

根据莫比乌斯反演,我们得到:

\[f(k)=\sum_{i=1}^{\frac nk}g(i\times k)\mu(i)=\sum_{i=1}^{\frac nk}\mu(i)\lfloor\frac nk\rfloor\lfloor\frac mk\rfloor \]

这样,我们可以用整除分块 $\max(\sqrt m,\sqrt n) $ 处理 \(\lfloor\frac nk\rfloor\lfloor\frac mk\rfloor\)

标签:lfloor,nk,frac,gcd,sum,rfloor,计算,对数
来源: https://www.cnblogs.com/wyb-sen/p/15031967.html