狄利克雷前缀和

狄利克雷卷积 \((f*g)(n)=\sum_{d|n}f(d)g(n/d)=\sum_{ab=n}f(a)g(b)\)。求 \(1\sim n\)\(f*g\) 通过欧拉筛类似方式 \(O(n\ln n)\)

给定 \(n,\{a_n\}\) ,以及 \(\{a_n\},\{b_n\}\) 之间的以下四种关系,求 \(\{b_n\}\)

【狄利克雷前缀和】

\(\displaystyle b_n=\sum_{d\mid n}a_d\)

for(int i=1;i<=CntPrime;i++)
      for(int j=1;j*Prime[i]<=N;j++)
            B[ j*Prime[i] ]+=B[j];

【狄利克雷后缀和】

\(\displaystyle b_n=\sum_{n\mid d}a_d\)

for(int i=1;i<=CntPrime;i++)
      for(int j=N/Prime[i];j>=1;j--)
            B[j]+=B[ j*Prime[i] ];

【倒狄利克雷前缀和】

\(\displaystyle a_n=\sum_{d\mid n}b_d\)

for(int i=CntPrime;i>=1;i--)
      for(int j=N/Prime[i];j>=1;j--)
            B[ j*Prime[i] ]-=B[j];

【倒狄利克雷后缀和】

\(\displaystyle a_n=\sum_{n\mid d}b_d\)

for(int i=CntPrime;i>=1;i--)
      for(int j=1;j*Prime[i]<=N;j++)
            B[j]-=B[ j*Prime[i] ];

载自link

posted @ 2022-02-06 15:36  pengyule  阅读(107)  评论(0)    收藏  举报