Jzptab [Bzoj 2693]

题目地址请点击——


Jzptab


Description

Jzptab [Bzoj 2693]_第1张图片


Input

一个正整数 T 表示数据组数
接下来 T 行 每行两个正整数 表示 N M


Output

T 行,每行一个整数,表示第 i 组数据的结果。


Sample Input

1
4 5


Sample Output

122


Hint

T<=10000
N,M<=10000000


Solution

nm

ans=i=1nj=1mlcm(i,j)=i=1nj=1mijgcd(i,j)=d=1n1dgcd(i,j)=d,1in,1jmij

f(d)=gcd(i,j)=d,1in,1jmij

F(d)=d|gcd(i,j),1in,1jmij


F(d)=(d+2d+3d++ndd)(d+2d+3d++mdd)=d2(1+nd)(1+md)ndmd4

根据莫比乌斯反演,

f(d)=i=1ndμ(i)(id)2(1+nid)(1+mid)nidmid4

ans=d=1ndi=1ndμ(i)i2(1+nid)(1+mid)nidmid4=t=1nt(1+nt)(1+mt)ntmt4i|tμ(i)i

g(d)=i|tμ(i)i ,则 g(d) 为积性函数。

d 的唯一分解式为 pq11×pq22×pq33××pqss

g(d)=i|tμ(i)i=i=1sg(pqii)=i=1s(1pi)

然后用线性筛就可以 O(n) 求出其值。
再求出 ig(i) 的前缀和,分块即可 O(n) 解决此题。

你可能感兴趣的:(题解,数学,BZOJ)