反演 1

数论分块

考虑一个反比例函数y=nx
对于这个函数向下取整,得到这个函数y=nx
这个函数值相同的部分肯定是连续段
通过数论分块可以快速求出左右端点,进而快速求区间和
时间复杂度O(n)

莫比乌斯反演

[n=1]=d|nμ(d)
证明:
n=1,d|nμ(d)=μ(1)=1
n>1,考虑将n分解质因数,
考虑到如果一个质因数的指数大于1那这个数的μ=0,事实上没有对求和产生贡献
所以现在变成了选偶数个质因数的数的个数减去选奇数个质因数相乘的数的个数
那么根据二项式定理的推论,结果就显然是0

反演的形式是这个:
fn=d|ngdgn=d|nfdμ(nd)

莫比乌斯反演的套路

1.[gcd(i,j)=1]=d|gcd(i,j)μ(d)
2.i=1nj=1m[gcd(i,j)=1]
=i=1nj=1md|gcd(i,j)μ(d)
=μ(d)ndmd

3.上述常见形式进一步的话可以再套一个
如果还能有进一个,考虑这个形式
ndxmdxμ(x)A(d)
A(x)是一个数论函数,进一步考虑筛法求值

3.5
化成上述形式以后再考虑筛法问题
考虑的方向就是换元搞狄利克雷卷积
把后边整成一个积性函数
然后套线性筛杜教筛啥的快速求一个前缀和
最后上数论分块做到线性或低于线性即可

4.x|dμ(x)的筛法

    for(int i=2;i<N;++i) {
        if(!flg[i]) p[++tot]=i,mu[i]=-1,f[i]=1;
        for(int j=1;j<=tot&&i*p[j]<N;++j) {
            int x=i*p[j];
            flg[x]=1;
            if(i%p[j]==0) {
                f[x]=mu[i];
                mu[x]=0;
                break;
            } else {
                f[x]=-f[i]+mu[i];
                mu[x]=-mu[i];
            }
        }
        f[i]+=f[i-1];
    }

5.考虑筛积性函数
如果用线筛考虑套线筛板子推怎么线筛
(记所有质数的集合为prime,primej表示第j大质数)
考虑线筛板子一共是3个部分
5.1 iprime
5.2 iprime
5.2.1 primej|i
5.2.2 primeji
然后就是前缀和

posted @   2K22  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示