binghun

前置知识

积性函数

指对于一个函数 \(f\),如果 \(f(ab)=f(a)f(b)\ a \bot b\),那么 \(f\) 就是积性函数

如果没有 \(a \bot b\) 的限制条件 \(f(ab)=f(a)f(b)\) 仍然成立,那么 \(f\) 就是完全积性函数

狄利克雷卷积

对于两个数论函数 \(f,g\),它们的狄利克雷卷积为:

\[f*g(n)=\sum_{d | n}f(d)g(\frac nd) \]

性质:对于两个积性函数 \(f,g\),它们的狄利克雷卷积也是积性函数

证明:设 \(f,g\) 为积性函数,\(h\)\(f,g\) 的狄利克雷卷积,\(n,m\in\mathbb{Z}\)\(n \bot m\)

\[\begin{aligned} h(n)h(m) &= \sum_{a | n}f(a)g(\frac{n}{a})\sum_{b | m} f(b)g(\frac{m}{b})\\ &= \sum_{a | n}\sum_{b | m}f(a)f(b)g(\frac{n}{a})g(\frac{m}{b}) \end{aligned} \]

\(n \bot m\) 可知 \(\forall a|n,\forall b|m,a \bot b\),所以:

\[h(n)h(m)=\sum_{a | n,b | m}f(ab)g(\frac{mn}{ab}) \]

\(a \bot b\) 可知 \(\{a:a|n\}\cup\{b:b|m\}=\{d:d|nm\}\),所以:

\[h(n)h(m)=\sum_{d|nm}f(d)g(\frac{nm}{d})=h(nm) \]

数论分块

数论分块,也叫整除分块,用处是将一类 \(\sum_{i=1}^n\lfloor\frac ni\rfloor\) 的式子计算所需复杂度由 \(O(n)\) 降至 \(O(\sqrt n)\)

很简单,考虑向下取整时,对与一些 \(i\)\(\lfloor\frac ni\rfloor\) 的值可能相同,那么只要将这些相同的一起处理,就可以减少复杂度。

\(\sum_{i=1}^n\lfloor\frac ni\rfloor\) 数论分块代码:

for (int i = 1, j; i <= n; i = j + 1) {
	j = n / (n / i);
	ans += (n / i) * (j - i + 1);
}

分类:

技术点:

相关文章:

  • 2021-09-19
  • 2021-10-28
  • 2021-12-10
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
  • 2021-04-14
  • 2021-05-29
猜你喜欢
  • 2022-02-09
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-07-13
  • 2021-09-30
  • 2022-12-23
相关资源
相似解决方案