题目:题目:题目:
∑i=1n∑j=1m[gcd(i,j)=k]\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i, j)=k] i=1∑nj=1∑m[gcd(i,j)=k]
做法:做法:做法:
设f(k)为gcd(i,j)=k的个数设f(k)为gcd(i,j)=k的个数设f(k)为gcd(i,j)=k的个数, g(k)为满足k∣gcd(i,j)的对数g(k)为满足k|gcd(i,j)的对数g(k)为满足k∣gcd(i,j)的对数,那么有下面的关系那么有下面的关系那么有下面的关系
g(k)=∑x=1⌊nk⌋f(kx)g(k)=\sum_{x = 1}^{\lfloor\frac{n}{k}\rfloor}f(kx)g(k)=x=1∑⌊kn⌋f(kx)
我们只需要快速求出g(k),可知如果i,j能被k整数,那么它们可以写成i=k⋅x1,j=k⋅x2的形式,我们只需求多少对x1,x2即可,可得我们只需要快速求出g(k) ,可知如果i,j能被k整数,那么它们可以写成i = k\cdot x_{1}, j = k \cdot x_{2}的形式, 我们只需求多少对x_{1},x_{2}即可,可得我们只需要快速求出g(k),可知如果i,j能被k整数,那么它们可以写成i=k⋅x1,j=k⋅x2的形式,我们只需求多少对x1,x2即可,可得
g(k)=⌊nk⌋⌊mk⌋ g(k) = \lfloor\frac{n}{k}\rfloor\lfloor\frac{m}{k}\rfloorg(k)=⌊kn⌋⌊km⌋
根据莫比乌斯反演的变形,可求得f(k)根据莫比乌斯反演的变形,可求得f(k)根据莫比乌斯反演的变形,可求得f(k)
f(k)=∑x=1⌊nk⌋μ(x)g(kx)=∑x=1⌊nk⌋μ(x)⌊nkx⌋⌊mkx⌋ f(k) = \sum_{x = 1}^{\lfloor\frac{n}{k}\rfloor}\mu(x)g(kx) =\sum_{x = 1}^{\lfloor\frac{n}{k}\rfloor} \mu(x)\lfloor\frac{n}{kx}\rfloor\lfloor\frac{m}{kx}\rfloorf(k)=x=1∑⌊kn⌋μ(x)g(kx)=x=1∑⌊kn⌋μ(x)⌊kxn⌋⌊kxm⌋
显然f(k)就是答案,暴力求复杂度是O(n)的,如何快速求?这里可以使用数论分块来做,⌊nd⌋最多有O(n个取值)显然f(k)就是答案,暴力求复杂度是O(n)的,如何快速求?\\这里可以使用数论分块来做, \lfloor\frac{n}{d}\rfloor最多有O(\sqrt{n}个取值)显然f(k)就是答案,暴力求复杂度是O(n)的,如何快速求?这里可以使用数论分块来做,⌊dn⌋最多有O(n个取值)
复杂度可以做到O(n+m)复杂度可以做到O(n+m)复杂度可以做到O(n+m)