Jzptab [Bzoj 2693]

来源:互联网 发布:php开源三级分销商城 编辑:程序博客网 时间:2024/05/19 05:39

题目地址请点击——


Jzptab


Description

这里写图片描述


Input

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


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) 解决此题。

1 0
原创粉丝点击