11.5 听课记录 && 数论函数


FSYo讲数论函数 ,Orz


一些数论积性函数

莫比乌斯函数,\(\mu\) 函数

\[\mu= \begin{cases} 1,&n=1\\ (-1)^c,&n=\prod_{i=1}^c p\\ 0,&n=k^2t \qquad (k>1) \end{cases} \]

元函数,\(\varepsilon\) 函数

\[\varepsilon= \begin{cases} 1,&n=1\\ 0,&n\ne1 \end{cases} \]

单位函数,\(id\) 函数

\[id=n \]

恒等函数,\(I\) 函数

\[I=1 \]

欧拉函数,\(\varphi\) 函数

\[\varphi=\sum_{d\leq n}[\gcd(d,n)=1] \]

因子和函数,\(\sigma\) 函数

\[\sigma=\sum_{d\mid n}d \]

约数个数,\(d\) 函数

\[d=\sum_{d\mid n} 1 \]


狄利克雷卷积

\[h=f\ast g \]

\[h(n)=\sum_{d\mid n}f(d)g(\frac nd) \]

两个积性函数做狄利克雷卷积得到的也是积性函数。


整除分块

blog

在莫比乌斯反演中广泛使用,推完的式子中经常出现,可以将 \(O(n)\) 优化至 \(O(\sqrt n)\),如果有多个整除也可以用,例如:

for(int l=1,r=min(n/(n/l),m/(m/l));;){
    //dosomething
    l=r+1;if(l>mn)break;
    r=min(n/(n/l),m/(m/l));
}

另外有个东西是 \(\lfloor\dfrac{\lfloor\dfrac{b}{k}\rfloor}{l}\rfloor=\lfloor\dfrac{{b}}{kl}\rfloor\)

考虑一下 \(\lfloor\dfrac{b}{k}\rfloor\)\(\dfrac{b}{k}\) 对于整除 \(l\) 的区别,\(\dfrac{b}{k}=\lfloor\dfrac{b}{k}\rfloor+\{\dfrac{b}{k}\}\),显然后面的小数对于整除 \(l\) 是没有影响的,所以就有 \(\lfloor\dfrac{\lfloor\dfrac{b}{k}\rfloor}{l}\rfloor=\lfloor\dfrac{\dfrac{b}{k}}{l}\rfloor\) 了。


神秘的知识

一些数论函数的卷积

\(I\ast I=d\)

\(I\ast id=\sigma\)

\(\varepsilon\ast I_k=I_k\)


\(d(ij)=\sum\limits_{x\mid i}\sum\limits_{y\mid j}[\gcd(x,y)=1]\)

考虑枚举 \(xy\)\(ij\) 的约数,视为 \(\prod\limits^tp_i^{k_i}\) 那么每个 \(p_i^{k_i}\) 应保证只会被一种方式枚举到。

我们规定 \(k_i\)\(p_i\) 优先在 \(x\) 中选,假设 \(x\)\(p_i\) 的个数为 \(c\),那么 \(k_i\le c\) 时,只有 \(x\) 中被选到了,当 \(k_i>c\)\(x\) 中被选完,剩下的在 \(y\) 中选,我们把\(x\) 中被选完,\(y\) 中选 \(d\)映射到只在 \(y\) 中选 \(d\),于是此时 \(\gcd(x,y)=1\),也就是式子中的枚举方法是正确的。


\(\varphi\ast I=id\)

\(n=\sum\limits_{d\mid n}\varphi(d)\).

考虑这样的分数约分:

\[\frac{1}{12},\frac{2}{12},\frac{3}{12},\frac{4}{12},\frac{5}{12},\frac{6}{12},\frac{7}{12},\frac{8}{12},\frac{9}{12},\frac{10}{12},\frac{11}{12},\frac{12}{12}\\ \frac{1}{12},\frac{1}{6},\frac{1}{4},\frac{1}{3},\frac{5}{12},\frac{1}{2},\frac{7}{12},\frac{2}{3},\frac{3}{4},\frac{5}{6},\frac{11}{12},\frac{1}{1} \]

发现很显然,不会严格证,感觉证起来好麻烦,但是这样理解起来就很清晰了。


\(I*\mu=\varepsilon\)

\[I\ast \mu=\sum_{d\mid n}\mu(d) \]

求和写出来应该是 \(1+(-1)+1+\cdots\) 这样 \(1\)\(-1\) 的和。

假设 \(n=\prod\limits^{t} p_i^{k_i}\),那么考虑每个 \(p_i\) 的选或不选,有贡献的 \(d\) 一共就有 \(2^t\) 个。

然后选奇数个 \(p\) 的贡献为 \(-1\),选偶数个 \(p\) 的贡献为 \(1\),那么就是 \(\dbinom t0-\dbinom t1+\dbinom t2-\cdots\),也就是 \(\sum\limits_{i=0}^{t}(-1)^i\dbinom ti\) ,发现是二项式定理的形式,也就是 \((1-1)^t\),也就是 \([t=0]=\varepsilon(t)\),所以 \(I\ast \mu=\varepsilon\)


\(id\ast\mu=\varphi\)

我们有

\(\varphi\ast I=id\)

左右两边都卷个 \(\mu\)

\(\varphi\ast I\ast\mu=id\ast\mu\)

于是

\(id\ast\mu=\varphi\)


莫比乌斯反演

\[F(n)=\sum_{d\mid n}f(d)\Rightarrow f(n)=\sum_{d\mid n}\mu(d)F(\frac nd) \]

\[F=f\ast I \]

\[\mu\ast F=f\ast I\ast\mu \]

\[f=\mu\ast F \]


基操

\[\sum_{i=1}^{n}\sum_{j=1}^{n}[\gcd(i,j)=1]\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}\varepsilon(\gcd(i,j))\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}I*\mu(\gcd(i,j))\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{d\mid \gcd(i,j)}\mu(d)\\ =\sum_{d=1}^{n}\mu(d)\sum_{i=1,d\mid i}^{n}\sum_{j=1,d\mid j}^n1\\ =\sum_{d=1}^n\mu(d)(\frac{n}{d})^2 \]

这个可以用在仪仗队那道题里。


例题

BZOJ2694/BZOJ4659

#2694. Lcm

\(S(n)=\sum\limits_{i=1}^{n}i\),可以 \(O(1)\) 计算

\[\begin{align*} &\sum_{i=1}^A\sum_{j=1}^{B}\mu(\gcd(i,j))^2\operatorname{lcm}(i,j)\\ &=\sum_{d=1}^n\sum_{d\mid i}^A\sum_{d\mid j}^B\mu^2(d)\frac{ij}{d}[\gcd(i,j)=d]\\ &=\sum_{d=1}^{n}\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}\mu^2(d)ijd[\gcd(i,j)=1]\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}ij\sum_{l\mid\gcd(i,j)}\mu(l)\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l}^{n/d}\mu(l)l^2\sum_{i=1}^{A/ld}\sum_{j=1}^{B/ld}ij\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l}^{n/d}\mu(l)l^2\sum_{i=1}^{A/ld}\sum_{j=1}^{B/ld}ij\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l=1}^{n/d}\mu(l)l^2S(\frac A{ld})S(\frac B{ld})\\ &=\sum_{T=1}^{n}S(\frac AT)S(\frac BT)\sum_{d\mid T}\mu^2(d)d\mu(\frac Td)(\frac Td)^2 \end{align*} \]

左边用整除分块,最多 \(2(\sqrt A+\sqrt B)\) 块,右边枚举最大质因子次数为1的 \(d\) ,至多 \(n\) 个,然后就是枚举倍数,一共 \(\sum\limits_{d\le n}\dfrac nd\) 次,这个东西参考hrj给出的方法可以理解是 \(n\log n\) 的。

于是复杂度 \(O(4T\sqrt n+n\log n)\),可以过掉此题。

另外感性理解一下右边那坨里面 \(\mu^2(d)d\)\(\mu(d)d^2\) 都是积性函数,所以整个都可以直接线筛。于是就可以 \(O(4T\sqrt n+n)\) 做。在 \(1\) 处的值是 \(1\),在 \(p\) 处的值是 \(p-p^2\),在 \(p^2\) 处的值是 \(-p^3\),在 \(p^k(k>2)\) 的点值是 \(0\),所以可以先把 \(p\)\(p^2\) 的值筛出来,再重新筛其他的,具体可以看代码。

参考代码


P1829

P1829 [国家集训队]Crash的数字表格

\[\begin{align*} &\sum_{i=1}^n\sum_{j=1}^m\operatorname{lca}(i,j)\\ &=\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{\gcd(i,j)}\\ &=\sum_{d=1}^{min(n,m)}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ijd[\gcd(i,j)=d]\\ &=\sum_{d=1}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ij\sum_{l\mid\gcd(i,j)}\mu(l)\\ &=\sum_{d}d\sum_{l=1}^{n/d}\mu(l)l^2\sum_{i=1}^{n/ld}\sum_{j=1}^{m/ld}ij\\ &=\sum_dd\sum_l\mu(l)l^2S(\frac n{ld})S(\frac m{ld})\\ &=\sum_{T=1}^{n}S(\frac nT)S(\frac mT)\sum_{l\mid T}\mu(l)l^2(\frac Tl)\\ &=\sum_{T=1}^{n}TS(\frac nT)S(\frac mT)\sum_{l\mid T}\mu(l)l \end{align*} \]

前面的一样可以整除分块,于是我们来看 \(\sum\limits_{l\mid T}\mu(l)l\)。如果 \(\mu(l)l\) 也是积性函数就可以线性筛,我们把这个式子看做 \(\mu\) 点乘 \(id\),也就是 \((\mu\cdot id)\)。我们考虑让它再卷上一个积性函数,如果得到的也是积性函数,那么这个函数也是积性函数。

我们让它卷上一个 \(id\),那么 \((\mu\cdot id)\ast id\) 写出来就是

\[\sum_{d\mid n}\mu(d)d*\frac nd\\ =n\sum_{d\mid n}\mu(d) \]

参考上面 \(I\ast \mu=\varepsilon\) 的证明,我们知道这个式子就是 \(\varepsilon\)

也就是说,由 \((\mu\cdot id)\ast id=\varepsilon\) 得到 \((\mu\cdot id)\) 也是积性函数,于是 \(\sum\limits_{l\mid T}\mu(l)l\) 就可以线筛了,那么要线性筛一个积性函数,我们只需要知道它在 \(p^k\) 处的点值。

\(\sum\limits_{l\mid n}\mu(l)l\),我们发现只有 \(l=1\)\(l=p\) 时有值,所以在 \(p^k\) 处的点值就是 \(1-p\)好怪哦

参考代码


P3327

P3327 [SDOI2015]约数个数和

\[\begin{align*} &\sum_{i=1}^n\sum_{j=1}^md(ij)\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y\mid j}\sum_{d\mid\gcd(x,y)}\mu(d)\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)\sum_{d\mid x\mid i}\sum_{d\mid y\mid j}1\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)\sum_{x\mid\frac id}\sum_{j\mid\frac jd}1\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)d(\frac id)d(\frac jd)\\ =&\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{n/d}d(i)\sum_{j=1}^{m/d}d(j) \end{align*} \]

\(S(x)=\sum\limits_{i=1}^xd(i)\),可以 \(O(n)\) 预处理,\(O(1)\) 查询。

于是

\[\begin{align*} &\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{n/d}d(i)\sum_{j=1}^{m/d}d(j)\\ =&\sum_{d=1}^{\min(n,m)}\mu(d)S(\lfloor\frac nd\rfloor)S(\lfloor\frac md\rfloor) \end{align*} \]

\(\mu\) 可以提前 \(O(n)\) 筛出来,然后右边整除分块,左边 \(O(1)\) 查询,总时间复杂度 \(O(n+T\sqrt n)\).

参考代码


其他例题:

P3327 P2522 P1447


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM