2018年1月19日训练笔记

     从昨天一直再看莫比乌斯反演,大体了解了过程,关于证明还是模模糊糊,也不会用,然后就暂时放弃了证明,接下来要看几道题,今天下午就再看《初等数论》,还没看多少,比想象中看的要慢一些。

      说一下莫比乌斯反演,对于定义在两个正整数集合上的两个函数f(n)与F(n),有莫比乌斯反演公式如下:

公式一:F(n)=d|nf(d)=>f(n)=d|nμ(d)F(nd)
公式二:F(n)=n|df(d)=>f(n)=n|dμ(dn)F(d)

   这里公式二比较常用。那么公式中的u(d)函数即是莫比乌斯函数,它的定义如下:

 

    (1)若,那么

    (2)若均为互异素数,那么

    (3)其它情况下

 

 

对于函数,它有如下的常见性质:

 

    (1)对任意正整数

  

                            

 

        (2)对任意正整数

 

         

     而且这里的莫比乌斯函数u(d)是一个积性函数,可以简单理解为对于μ(a),μ(b),当a与b互质时,μ(ab) = μ(a)μ(b)

     有线性筛选求莫比乌斯函数:

void Init()
{
    memset(vis,0,sizeof(vis));
    mu[1]=1;
    tot=0;
    for(int i=2; i<N; i++)
    {
        if(!vis[i]) //对于一个新质数,u(i)=(-1)^1=-1;
        {
            prime[tot++] = i;
            mu[i] = -1;
        }
        
        for(int j=0; j<tot&&i*prime[j]<N; j++)
        {
            vis[i*prime[j]] = 1;
            if(i%prime[j]) //如果i不是prime[j]的整数倍,那么i*prime[j]就不会有相同的质因子
                mu[i*prime[j]] = -mu[i]; //根据积性函数性质就有mu[i*prime[j]]=mu[i]*mu[prim[j]]=mu[i]*-1;
            else
            {
                mu[i*prime[j]] = 0;
                break;
            }
        }
    }
}
     
      比较经典的应用就是BZOJ 2820 ,题意大概是:给出n和m,求有多少对(x,y)(1<=x<=n,1<=y<=m)使得gcd(x,y)位质s数好吧,这题我还看不懂。但是大体知道莫比乌斯反演就是用来简化计算的,简化的就是函数f(n),那么问题就是在我们掌握了莫比乌斯反演之后怎么找函数F(n),f(n)。一般F(n)是可以直接求出来的,然后通过F(n)来求f(n).

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值