Jzptab
Description
Input
一个正整数
T
表示数据组数
接下来
Output
T
行,每行一个整数,表示第
Sample Input
1
4 5
Sample Output
122
Hint
T<=10000
N,M<=10000000
Solution
令
n≤m
,
ans=∑i=1n∑j=1mlcm(i,j)=∑i=1n∑j=1mijgcd(i,j)=∑d=1n1d⋅∑gcd(i,j)=d,1≤i≤n,1≤j≤mij
令
f(d)=∑gcd(i,j)=d,1≤i≤n,1≤j≤mij
F(d)=∑d|gcd(i,j),1≤i≤n,1≤j≤mij
则
F(d)=(d+2d+3d+…+⌊nd⌋d)(d+2d+3d+…+⌊md⌋d)=d2(1+⌊nd⌋)(1+⌊md⌋)⌊nd⌋⌊md⌋4
根据莫比乌斯反演,
f(d)=∑i=1⌊nd⌋μ(i)⋅(id)2(1+⌊nid⌋)(1+⌊mid⌋)⌊nid⌋⌊mid⌋4
∴ans=∑d=1nd∑i=1⌊nd⌋μ(i)⋅i2(1+⌊nid⌋)(1+⌊mid⌋)⌊nid⌋⌊mid⌋4=∑t=1nt⋅(1+⌊nt⌋)(1+⌊mt⌋)⌊nt⌋⌊mt⌋4∑i|tμ(i)⋅i
令 g(d)=∑i|tμ(i)⋅i ,则 g(d) 为积性函数。
设
d
的唯一分解式为
∴g(d)=∑i|tμ(i)⋅i=∏i=1sg(pqii)=∏i=1s(1−pi)
然后用线性筛就可以
O(n)
求出其值。
再求出
i⋅g(i)
的前缀和,分块即可
O(n−−√)
解决此题。