zoukankan      html  css  js  c++  java
  • 积性函数与卷积

    不定期更新的说呢...

    积性函数

    积性函数的概念:

    如果一个函数 (f(n))(a,b) 互质的情况下满足 (f(a*b)=f(a)*f(b)), 则称其为积性函数

    举例:

    (φ(n)) —— 欧拉函数 !

    (σ(n)) —— 约数和函数

    (μ(n)) —— 莫比乌斯函数 !

    (σ_0(n)) —— 约数个数函数

    (σ_k(n)) —— 约数次数和函数(其实上一个函数也可归为此类)

    完全积性函数的概念:

    如果一个函数 (f(n)) 对任意整数 (a,b) 满足 (f(a*b)=f(a)*f(b)), 则称其为完全积性函数

    举例

    (epsilon(n)) 单位元函数 (在 n 等于 1 的时候为 1 , 否则为 0 )

    (I(n)) 恒等函数 (就是永远等于 1 ,在卷积的时候经常会用到)

    (id(n)) 单位函数 (值为本身)

    (id^{k}(n)) 幂函数

    狄利克雷卷积

    卷积的符号为 (*) (很像乘号)

    运算法则如下:

    对于两个函数 (f,g),他们的卷积(f*g(n))(sum_{d|n}f(d) imes g(dfrac{n}{d}))

    其中 d|n 表示 d 能被 n 整除, n m 互质的话就是 (n⊥ m)

    至于莫比乌斯反演我只晓得大概的概念,用也不会用...稍微讲讲

    这里要用到莫比乌斯函数(下面会讲),莫比乌斯反演大概就是讲:

    若两个函数 (f,g) 满足 (g(n)=sum_{d|n}f(d)) (即(f*I=g)),

    则我们用 g 来求出 f ,方法如下:

    [f(n)=sum μ(d) imes g(dfrac{n}{d}) ]

    然鹅并不晓得运用(因为刷题少啊!)

    好吧其实非常有用的地方就是数论分块(杜教筛)了

    两个积性函数的卷积

    两个积性函数的卷积必然是积性函数,这是一个定理...下面给出 proof:

    若 f 、g 为两个积性函数, (n ⊥ m) ( n、 m 互质)

    那么我们要证的就是 (f* g(n) · f* g(m) = f* g(nm))

    根据定义有:

    [f* g(n)=sum_{d|n} f(d)g({nover d}) ]

    那么:

    [f* g(n)~·f* g(m)=sum_{d|n} f(d)g({nover d}) sum_{d|m} f(d)g({mover d}) ]

    [=sum_{d1|n} sum_{d2|m}f(d1)g({nover d1}) f(d2)g({mover d2}) ]

    因为 (n⊥m) ,所以 (d1⊥d2)

    [=sum_{d1|n} sum_{d2|m}f(d1·d2)g({nover d1} · {mover d2}) ]

    [=sum_{d|nm} f(d)g({nover d}) =f*g(nm) ]

    证毕呢...

    然后牢记一点,积性函数基本都是能线性筛出来的 0.0

    关于欧拉函数 (φ)

    欧拉函数就是对于 n , 它的欧拉函数的值为 1~n 中与其互质的数的个数

    它满足一个性质,就是 (φ*I=id)

    证明?不是很会

    其实证明方法很多,可以构造函数然后利用积性函数的性质加以证明

    关于莫比乌斯函数 (μ)

    这个东西满足一个性质,就是 (μ*I=e)

    好了,说直白点就是:莫比乌斯函数是用来容斥的

    当然,有的地方也得用到这个性质反过来的公式

    关于除数函数 (σ_1)

    这玩意儿能在线性筛的时候筛出来

    首先我们考虑一个数约数和的公式:

    [σ_1(n)=prod_{p∈prime} (1+p+p^2+p^3+...+p^{N_p}) ]

    再写得简洁一点:

    [sigma_1(n)=prod_{p∈prime} sum_{i=0}^{N_p}p^i ]

    (N_p) 表示 n 中质因子的个数

    这个公式就决定了该函数可以线性筛出来

    推荐博文阅读:

    https://lx-2003.blog.luogu.org/mobius-inversion

    https://blog.csdn.net/u013632138/article/details/61623497

    http://www.cnblogs.com/Colythme/p/9972264.html

  • 相关阅读:
    常用数据结构之字符串
    c++知识点总结--友元&运算符重载
    c++知识点总结-模板特化
    c++知识点总结--new的一些用法
    linux socket c/s上传文件
    STL之算法使用简介
    【bzoj2733】 HNOI2012—永无乡
    【bzoj3132】 Sdoi2013—森林
    【bzoj1483】 HNOI2009—梦幻布丁
    【bzoj3091】 城市旅行
  • 原文地址:https://www.cnblogs.com/Judge/p/10718016.html
Copyright © 2011-2022 走看看