莫比乌斯教我变魔术


莫比乌斯反演

详细的不赘述了,都在这里
f(n) 是积性函数,则如下 F(x) 也是积性函数

F(x)=dxf(d)
则莫比乌斯反演公式为:
f(x)=dxμ(d)F(xd)=dxμ(xd)F(d)


容斥原理

来考虑最简单的问题:1~n中的x的倍数 (1xn) 有多少个?

用下图来表示容斥的情况。每个圆内均有一个数字x,圆表示x的倍数的集合 F(x)
xy ,则 F(y)F(x)

定义 f(x) 为1~n中最大约数为x的数集,则 f(x) 就不是完整的圆了,可得

F(x)=xy,ynf(y)

其实 F(x) 很好求。如果反过来要求 f(x) 应该怎么办?

举例:n=30, 求 f(2)
f(2)=F(2)F(4)F(6)F(10)+F(12)F(14)+F(20)F(22)F(26)+F(28)+F(30)

只有在 y|x,F(y) 才会被考虑。设 F(y) 前的系数为 ay 设p为素数:
yx=p 时, F(y) 只属于 F(x) ,故 ay=1
yx=p1p2 时, F(y) 属于 F(x),F(xp1),F(xp2),axp1=axp2=1 ,故 ay=1

yx=p1p2...ps 时,改变状态的有 C1s+C2sC3s...+(1)s1Cs1s=1(1)say=(1)s
xyi=pv11pv22...pvssv1 ,则已有标记为

C1s+C2sC3s...+(1)sCss=i=0sCis(1)iC0s=(11)s1=1
则确定 ai=0ay=0 .
这证明过程和莫比乌斯函数的 证明是一样的,得到的系数即 μ(yx) 。得到
f(x)=xyμ(yx)F(y)

感受一下差别

莫比乌斯容斥
d是x的约数y是x的倍数
μ(xd) 自变量是跳跃的 μ(yx) 自变量是连续的
f(d) 为有限项 f(y) 为无限项(除非规定了一个范围)

因此要根据不同的已知条件来确定是哪一种。

校赛C题

求区间[a,b]中与n互质的数的个数。

分析:求[1,a]中与n互质的个数。
设F(y)是[1,a]中y的倍数的个数,则F(y)=a/y;设f(x)是[1,a]中与n的最大公约数是x的数的个数。注意,这里和上面容斥原理定义的函数略有不同。 f(x) 条件=旧有条件&新条件,造成 F(y) 的条件范围也缩小了。

F(y)=yx,yaxnf(x)      f(x)=xyxnμ(yx)F(y)
即要求
f(1)=1yaynμ(y)ay

POJ 3904

给n个数,求其中四个数的gcd是1的情况有多少种

校赛D题

给n个数,求其中三个数的gcd是m的情况有多少种。
f(x)=gcdx
F(x)=gcdx
n个数中有约数为x的数有y个,则 F(x)=C3y
f(m)


超级变变变

gcd

  1. a=1Nb=1Mgcd(a,b)
    预备: dnϕ(d)=n (证明)
    dgcd(a,b) ,则 dgcd(a,b)ϕ(d)=gcd(a,b) ,且 da, db ,

    a=1Nb=1Mgcd(a,b)=a=1Nb=1Mda,dbϕ(d)=d=1min{N,M}ϕ(d)a=1,daNb=1,dbM1=d=1min{N,M}ϕ(d)(a=1,daN1)(b=1,dbM1)=d=1min{N,M}ϕ(d)NdMd

  2. a=1Nb=1M[gcd(a,b)=1]
    预备: dnμ(d)=[n=1] (证明)
    dgcd(a,b) ,则 dgcd(a,b)μ(d)=[gcd(a,b)=1] ,且 da, db

    a=1Nb=1M[gcd(a,b)=1]   =a=1Nb=1Mda,dbμ(d)=d=1min{N,M}μ(d)a=1,daNb=1,dbM1=d=1min{N,M}μ(d)(a=1,daN1)(b=1,dbM1)=d=1min{N,M}μ(d)NdMd

  3. a=1Nb=1Mgcd(a,b) (另一种证法)

    a=1Nb=1Mgcd(a,b)  (2) (x=dg) =a=1Nb=1Mg[gcd(a,b)=g]=g=1min{N,M}ga=1N/gb=1M/g[gcd(a,b)=1]=g=1min{N,M}gd=1min{N/g,M/g}μ(d)N/gdM/gd=x=1min{N,M}gxgμ(xg)NxMx=x=1min{N,M}NxMxgxgμ(xg)

    与1的结果对比
    gxgμ(xg)=ϕ(x)
    两者相等。

  4. a=1Nb=1Mlcm(a,b)

    a=1Nb=1Mlcm(a,b)2x=dg=a=1Nb=1Mabgcd(a,b)=g=1min{N,M}1ga=1Nb=1Mab[gcd(a,b)=g]=g=1min{N,M}ga=1N/gb=1M/gab[gcd(a,b)=1]=g=1min{N,M}gd=1min{N/g,M/g}μ(d)(a=1,daN/ga)(b=1,dbM/gb)=g=1min{N,M}gd=1min{N/g,M/g}μ(d)(da=1N/g/da)(db=1M/g/db)=g=1min{N,M}gd=1min{N/g,M/g}μ(d)(da=1N/g/da)(db=1M/g/db)=g=1min{N,M}gd=1min{N/g,M/g}μ(d)14d2N/gd(N/gd+1)M/gd(M/gd+1)=14x=1min{N,M}NxMx(Nx+1)(Mx+1)xdxdμ(d)

    这里 xdxdμ(d) 可以先预处理出来。


O(2N+2M) 优化

当遇到类似于 x=1min{N,M}ϕ(x)NxMx 的通项公式时,一项一项求得速度很慢。观察 NxMx 的变化曲线,可以发现,当x比较大的时候, NxMx 将保持在一些区间内不变。
如N=100时,x在区间[51,100]内 Nx 保持为1;M=56,x在区间[29,56]内 Mx 保持为1。因此x
在区间[51,56]内 NxMx 保持不变为1。

对于N,x每逢一个约数都使得 Nx 发生改变,故这样的结点大约有 2N 个。
同时,要对欧拉函数求前缀和,使查询更快。

LL gao(int n, int m){
    LL re = 0;
    if(n > m) swap(n, m);
    int last;
    for(int i = 1;i <= n;i = last+1){
        last = min(n/(n/i), m/(m/i));
        re += 1LL*(n/i)*(m/i)*(sum[last]-sum[i-1]);
    }
    return re;
}

HDU 5528

欧拉函数变换


南大省赛

G(N,M)=a=1Nb=1Ma2b2gcd(a,b)
dgcd(a,b) ,则 dgcd(a,b)ϕ(d)=gcd(a,b) ,且 da, db

a=1Nb=1Ma2b2gcd(a,b)    =a=1Nb=1Ma2b2da,dbϕ(d)=d=1min{N,M}ϕ(d)a=1,daNb=1,dbMa2b2=d=1min{N,M}ϕ(d)(a=1,daNa2)(b=1,dbMb2)=d=1min{N,M}ϕ(d)d4(a=1N/da2)(b=1M/db2)=d=1min{N,M}ϕ(d)d4Nd(Nd+1)(2Nd+1)6Md(Md+1)(2Md+1)6

另一种解法:
a=1Nb=1Ma2b2[gcd(a,b)=1]   =a=1Nb=1Ma2b2da,dbμ(d)=d=1min{N,M}μ(d)a=1,daNb=1,dbMa2b2=d=1min{N,M}μ(d)(a=1,daNa2)(b=1,dbMb2)=d=1min{N,M}μ(d)d4(a=1N/da2)(b=1M/db2)

a=1Nb=1Ma2b2gcd(a,b)= = ()= (x=dg)= = = = = a=1Nb=1Ma2b2g[gcd(a,b)=g]g=1min{N,M}g5a=1N/gb=1M/ga2b2[gcd(a,b)=1]g=1min{N,M}g5d=1min{N/g,M/g}μ(d)d4(a=1N/g/da2)(b=1M/g/db2)x=1min{N,M}gxg5μ(xg)(xg)4(a=1N/xa2)(b=1M/xb2)x=1min{N,M}(a=1N/xa2)(b=1M/xb2)gxg5μ(xg)(xg)4x=1min{N,M}(a=1N/xa2)(b=1M/xb2)gxg.x4μ(xg)x=1min{N,M}x4(a=1N/xa2)(b=1M/xb2)gxgμ(xg)x=1min{N,M}x4(a=1N/xa2)(b=1M/xb2)ϕ(x)


计蒜客初赛第二场D题

在n*m个格点中选择两个格点作出直线。求所有不重合直线的条数。

同一斜率的直线有如图(n-1-a+m-1-b-1)条,其中 1<a<n,1<b<m,gcd(a,b)=1 ,故所有的直线条数为

a=1n1b=1m1(n+m1ab)[gcd(a,b)=1]

用莫比乌斯函数展开慢慢推。


公式打到手抽筋…

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值