基础?数论
Cy筛 给定 \(f,g\) 和一个系数 \(T,n\) ,我们知道 \([1,T]\) 和 \(\{\frac ni|i\in[1,\lfloor\frac nT\rfloor]\}\) 总共 \(T+\lfloor\frac nT\rfloor\) 个下标对应的 \(F=\sum f,G=\sum g\) ,而我们要求出 \(H=\sum h=\sum f*g\) 在这些下标上的取值。 我们发现这个东西有点像杜教筛,所以考虑用类似于杜教筛的数论分块来做。 \(1.i\in[1,T]\) 我们可以通过差分求出 \(f,g\) ,然后暴力卷积求得 \(h\) ,再做前缀和得到 \(H\) 。 这里的复杂度为 \(O(T\log T)\) 。 \(2.i\in\{\frac ni|i\in[1,\lfloor\frac nT\rfloor]\}\) 先回到定义式上。 \(H(n)=\sum\limits_{i=1}^n\sum\limits_{d|n}g(d)f(\frac{i}{d})\) \(H(n)=\sum\limits_{d=1}^ng(d) \sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)\) 我们画一个 \(y=\frac nx\) 的反比例函数的图像出来。 每个整点 \((x,y)\) 有一个权值 \(f(x)g(y)