莫比乌斯反演MöbiusInversionFormula

Posted Chivas_/Regal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫比乌斯反演MöbiusInversionFormula相关的知识,希望对你有一定的参考价值。

📕前置芝士 —— 莫比乌斯函数

🎈定义

μ ( n ) = { 1 n = 1 ( − 1 ) k n 无 平 方 因 数 , n = p 1 p 2 p 3 . . . p k 0 n 有 大 于 1 的 平 方 因 数 μ(n) = \\begin{cases} 1 & n = 1 \\\\ (-1)^k & n无平方因数,n = p_1p_2p_3...p_k \\\\ 0 & n有大于1的平方因数 \\\\ \\end{cases} μ(n)=1(1)k0n=1nn=p1p2p3...pkn1
可以简化为:
在n无平方因数时: μ ( n ) = ( − 1 ) n 的 不 同 质 因 子 的 个 数 μ(n) = (-1)^{n的不同质因子的个数} μ(n)=(1)n
其他情况:        μ ( n ) = 0 \\qquad\\;\\;\\;μ(n) = 0 μ(n)=0

🎈性质

正常情况下在n有x数个不同质因子,m有y数个不同质因子时
1.x奇,y奇,n * m的质因子个数 = x + y = 偶, μ ( n ) ∗ μ ( m ) = ( − 1 ) ∗ ( − 1 ) = 1 μ(n) * μ(m) = (-1) * (-1) = 1 μ(n)μ(m)=(1)(1)=1
2.x奇,y偶,n * m的质因子个数 = x + y = 奇, μ ( n ) ∗ μ ( m ) = ( − 1 ) ∗ 1      = − 1 μ(n) * μ(m) = (-1) * \\quad1 \\;\\;= -1 μ(n)μ(m)=(1)1=1
3.x偶,y奇,n * m的质因子个数 = x + y = 奇, μ ( n ) ∗ μ ( m ) = 1      ∗ ( − 1 ) = − 1 μ(n) * μ(m) = \\quad1 \\;\\;* (-1) = -1 μ(n)μ(m)=1(1)=1
4.x偶,y偶,n * m的质因子个数 = x + y = 偶, μ ( n ) ∗ μ ( m ) = 1      ∗ 1      = 1 μ(n) * μ(m) = \\quad1 \\;\\;* \\quad1 \\;\\;= 1 μ(n)μ(m)=11=1
可以看出莫比乌斯函数是个积性函数

但是特殊情况例如 n = m = 2 n = m = 2 n=m=2
μ ( n ) = μ ( m ) = − 1 μ(n) = μ(m) = -1 μ(n)=μ(m)=1
μ ( n ∗ m ) = 0      ! = ( − 1 ) ∗ ( − 1 ) = μ ( n ) ∗ μ ( m ) μ(n * m) = 0\\;\\;!= (-1) * (-1) = μ(n) * μ(m) μ(nm)=0!=(1)(1)=μ(n)μ(m)
所以莫比乌斯函数不是完全积性函数

🎈利用

∑ d ∣ n μ ( d ) = [ n = 1 ] \\sum_{d\\mid n}^{}μ(d) = [n = 1] dnμ(d)=[n=1]
例如 n = 12时
∑ d ∣ 12 μ ( 12 ) = μ ( 1 ) + μ ( 2 ) + μ ( 3 ) + μ ( 4 ) + μ ( 6 ) + μ ( 12 ) = 1 + ( − 1 ) + 1 + 0 + 1 + 0 \\sum_{d\\mid 12}^{}μ(12) =μ(1)+μ(2)+μ(3)+μ(4)+μ(6)+μ(12) = 1 + (-1) + 1 + 0 + 1 + 0 d12μ(12)=μ(1)+μ(2)+μ(3)+μ(4)+μ(6)+μ(12)=1+(1)+1+0+1+0

🎈程序

线性筛打表:

const int maxn = 2005;

bool isprime[maxn];
ll mu[maxn];//Mobius函数表
vector<ll> prime;

inline void Mobius(){//线性筛
        isprime[0] = isprime[1] = 1;
        mu[1] = 1;//特判mu[i] = 1
        for(ll i = 2; i <= maxn; i ++){
                if( !isprime[i] ) mu[i] = -1, prime.push_back(i);//质数的质因子只有自己,所以为-1
                for(ll j = 0; j < prime.size() && i * prime[j] <= maxn; j ++){
                        isprime[i * prime[j]] = 1;
                        if(i % prime[j] == 0) break;
                        mu[i * prime[j]] = -mu[i];//积性函数性质: (i * prime[j])多出来一个质数因数(prime[j]),修正为 (-1) * mu[i]
                }
        }
        //剩余的没筛到的是其他情况,为0
}

📕概述

🎈概念

莫反是一种利用莫比乌斯函数的积性性质,对方程进行计算用时简化的一种方法

🎈思想

(上文中性质的利用)

🎈反演式

设有两个方程 f ( x ) f(x) f(x) F ( x ) F(x) F(x),有以下两种反演方式

1. F ( n ) = ∑ d ∣ n f ( d ) F(n) = \\sum_{d|n}f(d) F(n)=dnf(d) ⇓ \\Downarrow f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) f(n) = \\sum_{d|n}{}μ(d)F(\\frac nd) f(n)=dnμ(d)F(dn)
2. F ( n ) = ∑ n ∣ d f ( d ) F(n) = \\sum_{n|d}f(d) F(n)=ndf(d) ⇓ \\Downarrow f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n) = \\sum_{n|d}{}μ(\\frac dn)F(d) f(n)=ndμ(nd)F(d)

📕实例

🎈题目

UVA10214 《Trees in a Wood.》传送门
在这里插入图片描述

🎈思路

[SDOI2008]仪仗队很像
在一个象限内
都是让求
             ∑ i = 1 N ∑ j = 1 M [ g c d ( i , j ) = 1 ] = ∑ i = 1 N ∑ j = 1 M ∑ d ∣ g c d ( i , j ) μ ( d )                 = ∑ d = 1 m i n ( N , M ) μ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ \\;\\;\\;\\;\\;\\;\\sum_{i = 1}^{N}\\sum_{j=1}^{M}[gcd(i,j)=1] \\\\ = \\sum_{i = 1}^{N}\\sum_{j = 1}^{M}\\sum_{d|gcd(i, j)}^{}μ(d)\\\\ \\;\\;\\;\\;\\;\\quad\\;\\;= \\sum_{d = 1}^{min(N, M)}μ(d)*\\left \\lfloor \\frac nd \\right \\rfloor *\\left \\lfloor \\frac md \\right \\rfloor \\\\ HYSBZ - 2005 莫比乌斯反演

莫比乌斯反演

模板 - 数学 - 数论 - 莫比乌斯反演 - 2

bzoj 2005: [Noi2010]能量采集莫比乌斯反演

bzoj [SDOI2014]数表 莫比乌斯反演 BIT

莫比乌斯反演笔记