数论函数(相关) 练习笔记笔记
整除分块
CF1202F You Are Given Some Letters...
对于一个循环节 \(len\),记算循环次数 \(s = \left\lfloor \frac{n}{len} \right\rfloor\)
要求 \(A\) 的个数在 \(al = \left\lceil \frac{a}{s + 1} \right\rceil\) 和 \(ar = \left\lfloor \frac{a}{s} \right\rfloor\) 之间,要求 \(B\) 的个数在 \(bl = \left\lceil \frac{b}{s + 1} \right\rceil\) 和 \(br = \left\lfloor \frac{b}{s} \right\rfloor\) 之间。
那么整除分块,对于一个 \(s\),\(len \in [al + bl, ar + br]\)。
莫比乌斯反演
\(f(i) = \sum\limits_{j | i} g(j) \Leftrightarrow g(i) = \sum\limits_{j | i} \mu(\frac{i}{j}) f(j)\)
P5518 [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题
精神污染。解析太长了 =
P5176 公约数
这题其实很简单,只要把那个 \(\gcd(ij,jk,ki)\) 化开来就好了。
P6271 [湖北省队互测2014]一个人的数论
这题就是用拉格朗日插值把 \(d\) 次前缀和化成 \(d+1\) 次多项式,然后就随便做了 = =
P1587 [NOI2016]循环之美
\(\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} [\gcd(i,j)=1][\gcd(j,k)=1]\)
\(=\sum\limits_{d=1}^n \mu(d) \sum\limits_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \sum\limits_{j=1}^{\left\lfloor\frac{m}{d}\right\rfloor} [\gcd(jd,k)=1]\)
\(=\sum\limits_{d=1}^n \mu(d) [\gcd(d,k)=1] \left\lfloor\frac{n}{d}\right\rfloor \sum\limits_{i=1}^{\left\lfloor\frac{m}{d}\right\rfloor} [\gcd(i,k)=1]\)
设 \(T(n)=\sum\limits_{1}^{n} [\gcd(i,k)=1]\), 因为 \(\gcd(i,k)=\gcd(i \mod k,k)\) \(T(n)=\phi(k) * (n / k) + \sum\limits_{i=1}^{n \mod k} [\gcd(i,k)=1]\)。可以预处理出后面那东西。
设 \(F(n, k) = \sum\limits_{i=1}^n \mu(i) [\gcd(i,k)=1]\)
\(=\sum\limits_{d|k} \mu(d) \sum\limits_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \mu(id)\)
\(=\sum\limits_{d|k} \mu(d) \sum\limits_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \mu(d) \mu(i) [gcd(i, d)=1]\)
\(=\sum\limits_{d|k} \mu(d)^2 \sum\limits_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \mu(i) [gcd(i, d)=1]\)
\(=\sum\limits_{d|k} \mu(d)^2 F(\left\lfloor\frac{n}{d}\right\rfloor, d)\)
\(k=1\) 的时候就是 \(\mu\) 函数前缀和。
\(n=0\) 时答案为 \(0\)
P3312 [SDOI2014]数表
只要离线下来,对于 \(a\) 的值扫过去即可。