BZOJ 1101: [POI2007]Zap(莫比乌斯反演)

Description

  FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a
,y<=b,并且gcd(x,y)=d。作为FGD的同学,FGD希望得到你的帮助。

Input

  第一行包含一个正整数n,表示一共有n组询问。(1<=n<= 50000)接下来n行,每行表示一个询问,每行三个
正整数,分别为a,b,d。(1<=d<=a,b<=50000)

Output

  对于每组询问,输出到输出文件zap.out一个正整数,表示满足条件的整数对数。

Sample Input

2
4 5 2
6 4 3

Sample Output

3
2
//对于第一组询问,满足条件的整数对有(2,2),(2,4),(4,2)。对于第二组询问,满足条件的整数对有(
6,3),(3,3)。

HINT

Source

Solution

题目要求:
\(\sum_{i=1}^a \sum_{j=1}^b[gcd(i,j)==d]\)

令\(a’=\lfloor a/d \rfloor\),\(b’=\lfloor b/d \rfloor\)

原式\(=\sum_{i=1}^{a’} \sum_{j=1}^{b’}[gcd(i,j)==1]\)

\(=\sum_{i=1}^{a’} \sum_{j=1}^{b’}\sum_{d|gcd(i,j)}\mu (d)\) \(=\sum^{a’}_{d=1}\mu (d)\lfloor a’/d \rfloor\lfloor b’/d \rfloor\)

筛完莫比乌斯函数后分块求解即可

0 0 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments