- 摘自百度百科
引入:
数论函数:对于定义域为正整数,值域为复数的函数称之为数论函数.
积性函数:一个积性函数f是一个数论函数,且对于gcd(x,y)=1有f(xy)=f(x)f(y).
完全积性函数:一个完全积性函数f是一个数论函数,且对于任意x,y 有f(xy)=f(x)f(y)
定义:
设f(n)、g(n)是两个数论函数,它们的Dirichlet乘积也是一个数论函数,其定义为:
简记为h(n)=f(n)*g(n)。
函数f(n)与g(n)的狄利克雷乘积也可以表示为
具体求出[1 , n ]的h=f*g可以这样求:
void dirichlet(int n){
for (int i=1;i<=n;++i)
for (int j=1;j*i<=n;++j)
h[i*j]+=f[i]*g[j];
}
性质:
1.满足结合律。设f,g,h为任意三个数论函数,则(f*g)*h=f*(g*h)。
2.满足交换律。设f,g为任意二个数论函数,则f*g=g*f。
3.对于所有的数论函数f(n),均有f(n)*I(n)=I(n)*f(n)=f(n),故I(n)在狄利克雷乘积中有单位元的作用,简称I(n)为单位数论函数,或称I(n)为卷积单位元。
4.若f(n),g(n)均为积性函数,则f*g亦为积性函数,反之,若g(n)与f(n)*g(n)都是积性函数,则f(n)亦为积性函 数。
特别地,当F(n)=f(n)*μ为积性函数时,f(n)亦为积性函数。
5.若g(n)是完全积性函数,且h(n)=f(n)*g(n),则f(n)=h(n)*μg(n),
即若
则:
常见的Dirichlet卷积函数:
例题:
不是我这种菜鸡可以看得懂的例题
HDU5528 迪利克雷卷积
题解:https://blog.csdn.net/Gipsy_Danger/article/details/84987625
HDU 5628 Clarke and math (Dirichlet卷积)
题解:https://blog.csdn.net/liangzhaoyang1/article/details/77822021
某大佬博客:
https://blog.csdn.net/hzk_cpp/article/details/86777183
因为看不懂看不下去不想看了。