1. 程式人生 > >#莫比烏斯反演,整除分塊,線性篩#洛谷 2522 bzoj 2301 problem b

#莫比烏斯反演,整除分塊,線性篩#洛谷 2522 bzoj 2301 problem b

題目

axb,cyda\leq x\leq b,c\leq y\leq dgcd(x,y)=kgcd(x,y)=k的個數

分析

其實只要做了洛谷 3455就會理解很多 蒟蒻的題解 然後這道題可以用字首和表達出來 TotalAns=Ans(b,d)Ans(a1,d)Ans(b,c1)+Ans(a1,c1)TotalAns=Ans(b,d)-Ans(a-1,d)-Ans(b,c-1)+Ans(a-1,c-1) 那麼如何求一個呢 f

(k)=i=1nj=1m[gcd(i,j)=k]f(k)=\sum_{i=1}^{n}\sum_{j=1}^{m} [gcd(i,j)=k] F(d)=kdf(k)=ndmdF(d)=\sum_{k|d}f(k)=\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor 根據莫比烏斯反演可以得到 f(k)=kdμ(dk)F(d)f(k)=\sum_{k|d}\mu(\lfloor\frac{d}{k}\rfloor)*F(d)
Ans=kdμ(dk)F(d)Ans=\sum_{k|d}\mu(\lfloor\frac{d}{k}\rfloor)*F(d) 列舉dk\lfloor\frac{d}{k}\rfloor

程式碼