1. 程式人生 > >BZOJ2301 Problem B 【莫比烏斯反演】【分塊】

BZOJ2301 Problem B 【莫比烏斯反演】【分塊】

題解:
對於 axbcyd,這個條件,我們發現比較難以處理,這時候我們可以利用二維字首和的思想,記 xbyd 時的答案為 A[b][d],那麼Ans=A[b][d]A[b][c1]A[a1][d]+A[a1][c1],這樣就把問題簡化成了兩個條件的問題。
下面推一下式子:
Ans=Σi=1bΣj=1d(gcd(i,j)==k)

=Σi=1bΣj=1d(gcd(i/k,j/k)==1)

我們發現 gcd(X,Y)==1,可以用卷積的單位元來做。

=Σi=1bΣj=1d(e(gcd(i/k,j/k))==1)

=Σi=1bΣj=1dΣT|(i/k),T|(j/k)μ(T)

=ΣT|(i/k),T|(j/k)μ(T)Σi=1b/(kT)Σj=1d/(kT)1

=ΣT|(i/k),T|(j,k)μ(T)(b/(kT))(d/(kT))

對於