狄利克雷前缀和
狄利克雷卷积 \((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

浙公网安备 33010602011771号