莫比乌斯反演

莫比乌斯反演

前言

本文章中所有出现的 ([n=1]) 表示只有 (n=1)时, ([n=1])(1) ,否则为 (0)

(n perp m) 表示 (n)(m) 互质。

狄利克雷卷积

引出:

我们都知道卷积的算式:

(C(n)= sumlimits_{i oplus j = n} A(i) imes B(j))

如果 “ $ oplus $ ”为加号,就是加法卷积,我们可以用 $ FFT$, (NTT) 等算法来快速实现加法卷积。

那么现在我们令“ $ oplus $ ”为乘号,它就成了乘法卷积。

(C(n)= sumlimits_{i imes j = n} A(i) imes B(j))

(Leftrightarrow C(n)= sumlimits_{imid n} A(i) imes B( frac{n}{i}))

上面这个就是狄利克雷卷积。

我们一般简写成: (C= A * B),“(*)”代表以上的运算。

它满足交换律:(A * B = B * A)

结合律:((A * B) * C = A * (B * C))

分配律:((A + B) * C = A * C + B * C)

单位元:

我们有一个叫单位元的东西,单位元叫 (epsilon)

对于任意一个数论函数 (f) , 都有 (epsilon * f = f)

而单位元的求法为 (epsilon(n)=[n=1]= egin{cases}1quad n=1\0quad n>1end{cases})

逆元:

每一个数论函数都存在它的逆元。

现在有两个数论函数 (f)(g)(g)(f) 的逆元,则有:(f*g=epsilon)

求一个函数的逆:(g(n)= frac{1}{f(1)}left([n=1]-sumlimits_{imid n,i e1}f(i)g( frac{n}{i}) ight))

积性函数:

积性函数:当(n perp m)时:

(f(n imes m)=f(n) imes f(m))

常见积性函数:(id)(mu)(phi)(sigma)

$ id(n)$ 函数就是返回自己,比如 (id(3)=3)

(sigma_0(n)) 函数就是求 (n) 的因数个数。

(phi(n)) 函数就是求与 (n) 互质的个数。

为什么要这么强调积性函数呢?因为这种函数可以通过线性筛来快速求解得到。

莫比乌斯反演:

我们定义 (1) 的逆为 (mu)

定义:(1 * mu = epsilon)

(1) 的逆元为 (mu)

设一个函数 (f)(f(n)=1)

(epsilon(n)=[n=1]=sumlimits_{dmid n}mu(d) imes f( frac{n}{d})=sumlimits_{dmid n}mu(d) imes 1=sumlimits_{dmid n}mu(d))

现在有两个数论函数 (f)(g) ,满足 (f * 1 = g) ,那么有 (g * mu = f)

则有: (f(n) = sumlimits_{i mid n} g(i) imes mu( frac{n}{i})) 。(莫比乌斯反演结论)

(mu) 的值:

(mu(n) = egin{cases} (-1)^{t}quad n = p_1p_2p_3...p_t且p_i互不相同。\ 0quad n不符合上述条件。end{cases})

例题

例一

求:(sumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=1]quad(n<m))

(Leftrightarrowsumlimits_{i=1}^nsumlimits_{j=1}^msumlimits_{dmid gcd(i,j)}mu(d))

因为 (d mid gcd(i,j)) 所以 (dmid i)(dmid j) ,因此 (i)(j) 必须得是 (d) 的倍数,然后把 (d) 提前。

得:

(Leftrightarrow sumlimits_{d=1}^nmu(d) imes leftlfloor frac{n}{d} ight floor imes leftlfloor frac{m}{d} ight floor)

首先 (mu) 可以用线性筛求出,然后式子前面一部分可以用前缀和实现,可以用后面一部分可以通过分块思想实现。

时间复杂度:(O(n))

例二

求:(sumlimits_{i=1}^n sumlimits_{j=1}^m [gcd(i,j)=k])

我们发现与例一相比,例二的 (gcd(i,j)) 的数不再是 (1) ,但是如果满足 (gcd(i,j)=k) 的话,必有 (k mid i) 且 $ k mid j$ ,那么我们可以让他们同除 (k) ,得到例一的式子。

(sumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor} [gcd(i,j)=1])

(sumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor} sumlimits_{d mid gcd(i,j)}mu(d))

(sumlimits_{d=1}^{leftlfloor frac{n}{k} ight floor}mu(d) imes {leftlfloor frac{n}{kd} ight floor} imes {leftlfloor frac{m}{kd} ight floor})

例三

求:(sumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)为素数])

例三我们现在的 $ gcd(i,j)$ 要求是为素数,我们可以枚举 (k) ,这样问题就转化成了例二。

(Leftrightarrow sumlimits_{k=1}^nsumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=k]quad k为素数)

(Leftrightarrow sumlimits_{k=1}^nsumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor}sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor}[gcd(i,j)=1]quad k为素数)

(Leftrightarrow sumlimits_{k=1}^nsumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor}sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor}sumlimits_{dmid gcd(i,j)}mu(d)quad k为素数)

(Leftrightarrowsumlimits_{k=1}^nsumlimits_{d=1}^leftlfloor frac{n}{k} ight floormu(d) imes sumlimits_{i=1}^leftlfloor frac{n}{k} ight floorsumlimits_{j=1}^leftlfloor frac{m}{k} ight floor[dmid i][dmid j]quad k为素数)

(Leftrightarrow sumlimits_{k=1}^nsumlimits_{d=1}^leftlfloor frac{n}{k} ight floormu(d) imes leftlfloor frac{n}{kd} ight floor imes leftlfloor frac{m}{kd} ight floorquad k为素数)

如果你觉得这样子就是最简了,直接就枚举(k),感觉可以,但是会超时。所以我们要继续对这个式子进行优化。我们设 (T=kd) ,得:

(Leftrightarrow sumlimits_{k=1}^n sumlimits_{dk=1}^n mu(d) imes leftlfloor frac{n}{kd} ight floor imes leftlfloor frac{m}{kd} ight floorquad k为素数)

(Leftrightarrow sumlimits_{T=1}^n sumlimits_{dmid T}mu( frac{T}{d}) imes leftlfloor frac{n}{T} ight floor imes leftlfloor frac{m}{T} ight floor quad d为素数)

然后 (sumlimits_{d mid T} mu( frac{T}{d})) 也可以在线性筛中求解,只要枚举每一个素数,然后把所有可以整除它的都加上就行了。

例四

(sumlimits_{i=1}^n sumlimits_{j=1}^n i imes j imes gcd(i,j))

老套路,我们枚举 (k)

(sumlimits_{k=1}^nsumlimits_{i=1}^n sumlimits_{j=1}^n i imes j imes k imes [gcd(i,j)=k])

这次同除 (k) 就要注意了,由于我们除 (k) 之后, (i)(j) 都变小了,所以我们必须再乘回来。

(sumlimits_{k=1}^nsumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{n}{k} ight floor} i imes j imes k^3 imes [gcd(i,j)=1])

(sumlimits_{k=1}^nsumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{n}{k} ight floor} i imes j imes k^3 imes sumlimits_{dmid gcd(i,j)}mu(d))

(sumlimits_{k=1}^n sumlimits_{d=1}^{leftlfloor frac{n}{k} ight floor}mu(d) imes sumlimits_{i=1}^{leftlfloor frac{n}{kd} ight floor} sumlimits_{j=1}^{leftlfloor frac{n}{kd} ight floor} i imes j imes k^3 imes d^2)

(sumlimits_{k=1}^n k^3 imes sumlimits_{d=1}^{leftlfloor frac{n}{k} ight floor}mu(d) imes d^2 imes sumlimits_{i=1}^{leftlfloor frac{n}{kd} ight floor} sumlimits_{j=1}^{leftlfloor frac{n}{kd} ight floor} i imes j)

(T = kd)

(sumlimits_{T=1}^n sumlimits_{dmid T}mu( frac{T}{d}) imes d imes T^2 imes sumlimits_{i=1}^{leftlfloor frac{n}{T} ight floor}i sumlimits_{j=1}^{leftlfloor frac{n}{T} ight floor}j)

(sumlimits_{T=1}^n T^2 imes sumlimits_{dmid T}mu( frac{T}{d}) imes d imes left( sumlimits_{i=1}^{leftlfloor frac{n}{T} ight floor}i ight)^2)

因为我们有 (id * mu = phi) ,所以 $phi(n) = sumlimits_{imid n}mu( frac{n}{i}) imes i $ 。

(sumlimits_{T=1}^n T^2 imes sumlimits_{dmid T}phi(d) imes left( sumlimits_{i=1}^{leftlfloor frac{n}{T} ight floor}i ight)^2)

(phi) 函数可以用线性筛求解,后面的可以用求和公式算出。

例五

求:(sumlimits_{i1=L}^Rsumlimits_{i2=L}^R...sumlimits_{in=L}^R[gcd(i1,i2...in)=K])

按照之前的套路。

(sumlimits_{i1=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}sumlimits_{i2=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}...sumlimits_{in=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}[gcd(i1,i2...in)=1])

(sumlimits_{i1=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}sumlimits_{i2=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}...sumlimits_{in=leftlfloor frac{L-1}{K} ight floor+1}^{leftlfloor frac{R}{K} ight floor}sumlimits_{dmid gcd(i1,i2...in)}mu(d))

(sumlimits_{d=1}^{leftlfloor frac{R}{K} ight floor}mu(d) imes leftlfloor frac{leftlfloor frac{R}{K} ight floor-leftlfloor frac{L-1}{K} ight floor-1}{d} ight floor^n)

(Y=leftlfloor frac{R}{K} ight floor)(X = leftlfloor frac{L-1}{K} ight floor + 1)

(sumlimits_{d=1}^{leftlfloor frac{R}{K} ight floor}mu(d) imes leftlfloor frac{Y - X}{d} ight floor^n)

例六

(sumlimits_{i=1}^n sumlimits_{j=1}^m sigma_1(gcd(i,j)))

我们可以通过枚举 (k)(gcd(i,j)) 转到外面。

(sumlimits_{k=1}^n sumlimits_{i=1}^n sumlimits_{j=1}^m sigma_1(k) imes [gcd(i,j)=k])

(sumlimits_{k=1}^n sumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor} sigma_1(k) imes [gcd(i,j)=1])

(sumlimits_{k=1}^n sumlimits_{i=1}^{leftlfloor frac{n}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{m}{k} ight floor} sigma_1(k) imes sumlimits_{dmid gcd(i,j)}mu(d))

(sumlimits_{k=1}^n sigma_1(k) imes sumlimits_{d=1}^{leftlfloor frac{n}{k} ight floor}mu(d) imes leftlfloor frac{n}{kd} ight floor imes leftlfloor frac{m}{kd} ight floor)

(T=kd)

(sumlimits_{T=1}^{n} leftlfloor frac{n}{T} ight floor imes leftlfloor frac{m}{T} ight floor imes sumlimits_{dmid T}sigma_1(d) imes mu(leftlfloor frac{T}{d} ight floor))

(sigma_1(n)) 表示 (n) 所有的因数之和,是积性函数。

例七

(sumlimits_{i=1}^n sumlimits_{j=1}^n gcd(A_i,A_j))

乍一看,我们发现我们对 (Ai)(Aj) 无从下手,我们希望把 (gcd) 里面的东西变成我们可以控制的。我们可以用 (B) 来统计 (A) 出现的次数, (MAXA) 表示 (A) 中最大的数的值,这样一来, (gcd) 里面的东西就是我们可以控制的 (i)(j) 了。

(sumlimits_{i=1}^{MAXA} sumlimits_{j=1}^{MAXA} gcd(i,j) imes B_i imes B_j)

(sumlimits_{k=1}^{MAXA} sumlimits_{i=1}^{MAXA} sumlimits_{j=1}^{MAXA} [gcd(i,j)=k] imes B_i imes B_j)

(sumlimits_{k=1}^{MAXA} sumlimits_{i=1}^{leftlfloor frac{MAXA}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{MAXA}{k} ight floor} [gcd(i,j)=1] imes B_{ik} imes B_{jk})

(sumlimits_{k=1}^{MAXA} sumlimits_{i=1}^{leftlfloor frac{MAXA}{k} ight floor} sumlimits_{j=1}^{leftlfloor frac{MAXA}{k} ight floor} sumlimits_{dmid gcd(i,j)}mu(d) imes B_{ik} imes B_{jk})

(sumlimits_{k=1}^{MAXA} sumlimits_{d=1}^{leftlfloor frac{MAXA}{k} ight floor} mu(d) imes sumlimits_{i=1}^{leftlfloor frac{MAXA}{kd} ight floor} sumlimits_{j=1}^{leftlfloor frac{MAXA}{kd} ight floor} B_{ikd} imes B_{jkd})

(T=kd)

(sumlimits_{k=1}^{MAXA} sumlimits_{dk=1}^{MAXA} mu(d) imes sumlimits_{i=1}^{leftlfloor frac{MAXA}{kd} ight floor} sumlimits_{j=1}^{leftlfloor frac{MAXA}{kd} ight floor} B_{ikd} imes B_{jkd})

(sumlimits_{T = 1}^{MAXA} sumlimits_{d mid T} mu(d) imes sumlimits_{i=1}^{leftlfloor frac{MAXA}{T} ight floor} sumlimits_{j=1}^{leftlfloor frac{MAXA}{T} ight floor} B_{iT} imes B_{jT})

(sumlimits_{T = 1}^{MAXA} sumlimits_{d mid T} mu(d) imes left( sumlimits_{i=1}^{leftlfloor frac{MAXA}{T} ight floor} B_{iT} ight)^2)

原文地址:https://www.cnblogs.com/eromangasensei/p/13041300.html