zoukankan      html  css  js  c++  java
  • 杜教筛

    狄利克雷卷积

    (spacespacespacespacespacespace)定义:两个数论函数f和g的卷积为((f*g)(n)=sum_{d|n} f(d)⋅g(frac{n}{d}))。前面的括号代表将f卷g,后面的括号代表范围。
    (spacespacespacespacespacespace)元函数(ϵ):满足:(f∗ϵ=f)

    莫比乌斯函数

    (spacespacespacespacespacespace)莫比乌斯函数(mu)满足(sum_{d|n}μ(d)=[n=1]),我们用狄利克雷卷积来表示(μ∗I=ϵ)

    欧拉函数

    (spacespacespacespacespacespace)欧拉函数有一个性质(sum_{d|n}φ(d)=n),我们用狄利克雷卷积来表示(φ∗I=id)

    莫比乌斯函数与欧拉函数的关系

    (φ∗I=id)
    (→φ∗I∗μ=id∗μ)
    (→φ∗ϵ=id∗μ)
    (→φ=id∗μ)
    (→φ(n)=sum_{d|n}μ(d)frac nd)
    我们把这个式子的两边同时除以n,则:
    (frac {φ(n)}{n}=sum_{d|n} frac{μ(d)}{d})

    杜教筛

    杜教筛是用低于线性的复杂度来求(sum_{i=1}^{n}f(i))
    我们首先构造两个函数(g),(h),使其满足(h=f*g)
    现在我们求(sum_{i=1}^{n}h(i))
    (sum_{i=1}^{n}h(i)=sum_{i=1}^{n}sum_{d|i}g(d)⋅f(frac{i}{d}))
    (=sum_{d=1}^{n}g(d)⋅sum_{i=1}^{⌊nd⌋}f(i))

    (sum_{i=1}^{n}h(i)=sum_{d=1}^{n}g(d)⋅S(⌊nd⌋))
    我们将右边式子的第一项给提出
    (sum_{i=1}^{n}h(i)=g(1)⋅S(n)+sum_{d=2}^{n}g(d)⋅S(⌊nd⌋))
    (g(1)S(n)=sum_{i=1}^{n}h(i)−sum_{d=2}^{n}g(d)⋅S(⌊nd⌋))
    其中(h(i)=(f∗g)(i))
    根据这个式子,我们只要(h(i))的前缀和很好求,就可以对后面的式子用整除分块在(O(n^{frac{2}{3}}))的时间内快速求解

  • 相关阅读:
    ini 文件
    基元类型、引用 类型与值类型
    C#的 is 和 as 类型转换
    MVC 项目中为什么会有两个web.config
    Linux下安装SVN服务端小白教程
    测试博文中添加可执行JS代码
    坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)
    fsfds
    高斯混合模型Gaussian Mixture Model (GMM)
    ggplot2绘制概率密度图
  • 原文地址:https://www.cnblogs.com/wls001/p/10075625.html
Copyright © 2011-2022 走看看