关于容斥原理和莫比乌斯反演理解

以题目 “HDU - 2204 Eddy’s爱好” 为例

首先比较容易想到的是对于一个 [1,n] [ 1 , n ] 这 n 个数,可以写成 ax a x 的一共有 n1x n 1 x 个数字。
那么首先我们可以枚举 x ,就能完全不遗漏地考虑到所有满足情况的数字。但是,这之间一定会有数字重复考虑了,比如:如果一个数可以表示成 a12 a 12 那么它就一定可以表示成 a6 a 6 ;如果一个数可以表示成 a6 a 6 ,那么它一定既可以表示成 a2 a 2 也同样可以表示成 a3 a 3

那么首先为了方便计数,我们把 x x 表示成:

x=pc11pc22...pckk x = p 1 c 1 p 2 c 2 . . . p k c k
如果 c1,c2...ck c 1 , c 2 . . . c k 不都为1,那么我们直接不记录它的贡献了,因为它可以唯一确定的对应成 x=p1p2...pk x ′ = p 1 p 2 . . . p k ,即 c1,c2...ck c 1 , c 2 . . . c k 都为 1 的情况,它的贡献就看成 x x ′ 的贡献就完了。然后就是如果 x x 只由若干质数相乘得到的情况了,设: x1=p1p2...pkgcd(x1,x2) x 1 = p 1 ∗ p 2 . . . p k ∗ g c d ( x 1 , x 2 ) x2=q1q2...qkgcd(x1,x2) x 2 = q 1 ∗ q 2 . . . q k ∗ g c d ( x 1 , x 2 ) 那么 x1 x 1 x2 x 2 贡献重复的部分即为: lcm(x1,x2) l c m ( x 1 , x 2 ) 的贡献。
所以容斥一下就是: x x 对总答案的贡献为 (1)k+1n1x ( − 1 ) k + 1 ∗ n 1 x ,我们容易发现,如果设 f(x)=n1x f ( x ) = n 1 x ,那么贡献就是: (1)k+1f(x) ( − 1 ) k + 1 ∗ f ( x ) ,这就恰好符合了莫比乌斯函数 u(x) u ( x ) 的定义。所以我们得到最终答案:
ans=i=1nu(i)(f(i)1) a n s = ∑ i = 1 n u ( i ) ∗ ( f ( i ) − 1 )

你可能感兴趣的:(一通乱写,数论)