1. 程式人生 > >【BZOJ3994】[SDOI2015] 約數個數和(莫比烏斯反演)

【BZOJ3994】[SDOI2015] 約數個數和(莫比烏斯反演)

點此看題面

大致題意:d(x)d(x)xx的約數個數,求i=1Nj=1Md(ij)\sum_{i=1}^N\sum_{j=1}^Md(i·j)

莫比烏斯反演

這是一道莫比烏斯反演題。

LinkLink

一個重要的性質

首先我們要先了解d(ij)d(i·j)這個函式的性質:

d(i,j)=xiyj[gcd(x,y)==1]d(i,j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]

證明: 我也不知道,應該就是列舉ii

jj的約數,求出其中不互質的約數對個數,避免重複計算。

一些定義

按照莫比烏斯反演的常見套路,我們可以定義f(d)f(d)F(n)F(n)如下:

f(d)=i=1Nj=1M[gcd(i,j)==d]f(d)=\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)==d]

F(n)=ndf(d)F(n)=\sum_{n|d}f(d)

然後由莫比烏斯反演的某些性質,我們可以得到下面這個式子:

f(n)=ndμ(dn)F(d)f(n)=\sum_{n|d}\mu(\lfloor\frac dn\rfloor)F(d)

公式化簡

首先,題目中已經給出:

answer=i=1Nj=1Md(ij)answer=\sum_{i=1}^N\sum_{j=1}^Md(i·j)

由於上面提到的性質,我們可以得到:

answer=i=1Nj=1Mxiyj[gcd(x,y)==1]answer=\sum_{i=1}^N\sum_{j=1}^M\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]

根據莫比烏斯函式μ\mu

的性質dnμ(d)=[n==1]\sum_{d|n}\mu(d)=[n==1],所以,我們可以將μ\mu代入,將原式變成這個樣子:

answer=i=1Nj=1Mxiyjdgcd(x,y)μ(d)answer=\sum_{i=1}^N\sum_{j=1}^M\sum_{x|i}\sum_{y|j}\sum_{d|gcd(x,y)}\mu(d)

由於這個式子難以操作,因此,我們可以將原式略作修改,改成對dd進行列舉,變成這個樣子:

answer=i=1Nj=1Mxiyjd=1min(n,m)μ(d)[dgcd(x,y)]answer=\sum_{i=1}^N\sum_{j=1}^M\sum_{x|i}\sum_{y|j}\sum_{d=1}^{min(n,m)}\mu(d)*[d|gcd(x,y)]

不難發現,μ(d)\mu(d)的值是與i,j,x,yi,j,x,y無關的,因此可以將其單獨提出,就變成了這樣:

answer=d=1min(n,m)μ(d)i=1Nj=1Mxiyj[dgcd(x,y)]answer=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{i=1}^N\sum_{j=1}^M\sum_{x|i}\sum_{y|j}[d|gcd(x,y)]

然後,我們可以從列舉i,ji,j及其約數x,yx,y,轉變為直接列舉約數x,yx,y,然後將其貢獻乘上約數倍數的個數(這應該還是比較好理解的),於是就有了下面這個式子:

answer=d=1min(n,m)μ(d)x=1Ny=1M[dgcd(x,y)]NxMyanswer=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{x=1}^N\sum_{y=1}^M[d|gcd(x,y)]\lfloor\frac Nx\rfloor\lfloor\frac My\rfloor

考慮由dgcd(x,y)d|gcd(x,y)可以得到dxd|xdyd|y,即xxyydd的倍數所以我們就可以通過直接列舉dd的倍數dxd·xdyd·y來取代列舉x,yx,y,從而消去dgcd(x,y)d|gcd(x,y)這個限制: answer=d=1min(n,m)μ(d)x=1Ndy=1MdNdxMdyanswer=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{x=1}^{\lfloor\frac Nd\rfloor}\sum_{y=1}^{\lfloor\frac Md\rfloor}\lfloor\frac N{d·x}\rfloor\lfloor\frac M{d·y}\rfloor

最後,我們可以將原式稍作變動,得到下面這個式子:

answer=(d=1min(n,m)μ(d))(x=1NdNdx)(y=1MdMdy)answer=(\sum_{d=1}^{min(n,m)}\mu(d))(\sum_{x=1}^{\lfloor\frac Nd\rfloor}\lfloor\frac N{d·x}\rfloor)(\sum_{y=1}^{\lfloor\frac Md\rfloor}\lfloor\frac M{d·y}\rfloor)