数论 习题

例 1:P2522 [HAOI2011] Problem b

\(t\) 组询问,给定 \(a,b,c,d,k\),查询 \(\sum_{x=a}^b\sum_{y=c}^d[\gcd(x,y)=k]\)\(t,a,b,c,d,k\le5\times10^4\)

先拆为四个

\[\sum_{x=1}^n\sum_{y=1}^m[\gcd(x,y)=k] \]

等于

\[\sum_{x=1}^{\normalsize \lfloor\frac nk\rfloor}\sum_{y=1}^{\normalsize\lfloor\frac mk\rfloor}\varepsilon(\gcd(x,y)) \]

\(N=\lfloor\frac nk\rfloor,M=\lfloor\frac mk\rfloor\)

则上式转化为

\[\begin{aligned} &\sum_{x=1}^N\sum_{y=1}^M\varepsilon(\gcd(x,y))\\ =&\sum_{x=1}^N\sum_{y=1}^M\sum_{d\mid x,d\mid y}\mu(d)\\ =&\sum_{d=1}^{\min(N,M)}\mu(d)\sum_{d\mid x}\sum_{d\mid y}1\\ =&\sum_{d=1}^{\min(N,M)}\mu(d)(N/d)(M/d)\\ \end{aligned}\]

显然可以数论分块

时间复杂度 \(O\left(\sum\sqrt{\normalsize\frac{\min(n,m)}k}\right)\)

代码

例 2:P1829 [国家集训队] Crash的数字表格 / JZPTAB

给定 \(n,m\),求 \(\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(n,m)\)\(n,m\le10^7\)

化式子:

\[{\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)\\ =&\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{\gcd(i,j)}\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}[\gcd(i,j)=d]\frac{ij}{d}\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\left[\gcd\left(\frac id,\frac jd\right)=1\right]\frac{ij}{d}\\ =&\sum_{d=1}^{\min(n,m)}\sum_{d\mid i}\sum_{d\mid j}\left[\gcd\left(\frac id,\frac jd\right)=1\right]\frac{ij}{d}\\ =&\sum_{d=1}^{\min(n,m)}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1]ijd\\ =&\sum_{d=1}^{\min(n,m)}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{D\mid i,D\mid j}\mu(D)ij\\ =&\sum_{d=1}^{\min(n,m)}d\sum_{D=1}^{\min(n/d,m/d)}\mu(D)\sum_{D\mid i,i\le n/d}i\sum_{D\mid j,m/d}j\\ =&\sum_{d=1}^{\min(n,m)}d\sum_{D=1}^{\min(n/d,m/d)}\mu(D)\sum_{i=1}^{n/(dD)}\sum_{j=1}^{m/(dD)}ijD^2\\ =&\sum_{d=1}^{\min(n,m)}d\sum_{D=1}^{\min(n/d,m/d)}\mu(D)D^2\sum_{i=1}^{n/(dD)}i\sum_{j=1}^{m/(dD)}j\\ \end{aligned}}\]

\(f(x)=\frac{x(x+1)}2\)\(F(n,m)=\sum_{D=1}^{\min(n,m)}\mu(D)D^2 f(n/D)f(m/D)\)

则上式等于 \(\sum_{d=1}^{\min(n,m)}d F(\lfloor\frac nd\rfloor,\lfloor\frac md\rfloor)\)

显然可以预处理加数论分块套数论分块解决

时间复杂度 \(O(n+m)\)

代码

例 3:P3327 [SDOI2015] 约数个数和

给定 \(T\)\(n,m\),求出 \(\sum_{i=1}^n\sum_{j=1}^m d(ij)\),其中 \(d(x)\)\(x\) 的因子数量,\(T,n,m\le5\times10^4\)

由于 \(d(ij)=\sum_{x\mid i}\sum_{y\mid j}\varepsilon(\gcd(x,y))\)

可得

\[{\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m d(ij)\\ =&\sum_{i=1}^n\sum_{j=1}^m \sum_{x\mid i}\sum_{y\mid j}\varepsilon(\gcd(x,y))\\ =&\sum_{i=1}^n\sum_{j=1}^m \sum_{x\mid i}\sum_{y\mid j}\sum_{d\mid x,d\mid y}\mu(d)\\ =&\sum_d\sum_{d\mid x}\sum_{d\mid y} \sum_{x\mid i}\sum_{y\mid j}\mu(d)\\ =&\sum_d\mu(d)\sum_{d\mid x}(n/x)\sum_{d\mid y}(m/y)\\ =&\sum_d\mu(d)\sum_{x=1}^{n/d}((n/d)/x)\sum_{y=1}^{m/d}((m/d)/y)\\ \end{aligned}}\]

预处理出所有 \(s_x=\sum_{i=1}^x(x/i)\),则上式容易数论分块解决

时间复杂度 \(O(\max n+\sum\sqrt n)\)(假设 \(n,m\) 同阶)

代码

例 4:CF2039F2 Shohag Loves Counting (Hard Version)

对于 \(a_{1\sim n}\),定义 \(f(k)=\gcd_{i=1}^{n=k+1}\{\sum_{j=i}^{j+k-1}a_j\}\)。定义 \(a_{1\sim n}\) 是好的当且仅当 \(\forall 1\le i<j\le n,f(i)\ne f(j)\)。给定 \(m\),求出仅包含数字 \(1\sim m\) 的好的序列的数量取模。\(m\le10^6\),多测 \(T\le3\times10^5\)

可证 \(a\) 是好的当且仅当 \(a\) 单谷 且 将其从大到小排序后其任意前缀 \(\gcd\) 互不相同

先考虑其弱化版,\(\sum m\le10^5\) 的情况(即 CF2039F1 Shohag Loves Counting (Easy Version)),对于每组 \(m\) 依次求解

对于一个从大到小排序了的 \(a_{1\sim n}\),其排序前有 \(2^{n-1}\) 种可能(每个 \(a_{1\sim {n-1}}\) 都可以在 \(a_n\) 左侧或右侧)

\(f_{i,j}\) 为排序后的 \(a\) 前缀 \(\gcd\) 等于 \(i\),长为 \(j\) 的方案数(显然 \(j\)\(O(\log n)\) 的)

由于要求序列递减,因此从 \(n\)\(1\) 加入最后一个数 \(x\),考虑其对整个 \(f\) 数组的贡献

显然只会影响 \(i\mid x\)\(f_{i,j}\),其余不变

\(f'\) 为修改后的 \(f\),则有:

\[f'_{x,1}\leftarrow 1 \]

\[f'_{i,j}\leftarrow f_{i,j}+\sum_{k>1}[\gcd(ik,x)=i]f_{ik,j-1} \]

答案为 \(\sum_i\sum_j2^{j-1}f_{i,j}\)

直接做\(O(m^2+\sum m^{3/2}\log^2 n)\) 的(预处理了 \(\gcd\)

发现最后 \(2^{j-1}\) 的系数可以移到转移中:

\[f'_{x,1}\leftarrow 1 \]

\[f'_{i,j}\leftarrow f_{i,j}+\sum_{k>1}[\gcd(ik,x)=i]2f_{ik,j-1} \]

答案为 \(\sum_i\sum_jf_{i,j}\)

此时可以省略第二维,新的 \(f_i\) 存储 \(\sum_j f_{i,j}\),转移为

\[f'_x\leftarrow f'_x+1 \]

\[f'_{i}\leftarrow f_{i}+\sum_{k>1}[\gcd(ik,x)=i]2f_{ik} \]

答案为 \(\sum f_i\)

这样 时间复杂度为 \(O(\sum n^{3/2}\log^2 n)\)

\(s_i=\sum_{i\mid j}f_j\),则第二种转移变为:

\[{\begin{aligned} f'_i=&f_i+\sum_{k>1}[\gcd(ik,x)=i]2f_{ik}\\ =&f_i+\left(\sum_k [\gcd(ik,x)=i]2f_{ik}\right)-2f_i\\ =&f_i+2\left(\sum_k \left[\gcd\left(k,\frac xi\right)=1\right]f_{ik}\right)-2f_i\\ =&f_i+2\left(\sum_k\sum_{d\mid k,d\mid{\frac xi}} \mu(d)f_{ik}\right)-2f_i\\ =&f_i+2\left(\sum_{d\mid{\frac xi}}\mu(d)\sum_{d\mid k}f_{ik}\right)-2f_i\\ =&f_i+2\left(\sum_{d\mid{\frac xi}}\mu(d)\sum_{(di)\mid k}f_{k}\right)-2f_i\\ =&f_i+2\left(\sum_{d\mid{\frac xi}}\mu(d)s_{di}\right)-2f_i\\ \end{aligned}}\]

先根据旧的 \(f\) 求出新的 \(f_i\) 相对旧 \(f_i\) 的增量,记为 \(tmp_i\),然后用 \(tmp_i\) 统一更新 \(f\)\(s\)

预处理所有数的因数列表,则时间复杂度为 \(O(\sum n^{1+\varepsilon})\)(因为 \(d(n)=n^{\varepsilon}\)

这样足够通过 简单版

考虑如何解决原问题

\(\vec v_x\) 为加入 \(x\)\(f\)\(tmp\)\(s\) 三个数组和 \(1\) 依次拼接起来得到的向量

\(\vec v_x\)\(\vec v_{x-1}\) 的转移可以写为一个矩阵

矩阵的转置有性质 \(AB=(B^TA^T)^T\)

因此若将初始向量和每个转移矩阵转置,则原本 \(n\sim 1\) 的递推可以变为 \(1\sim n\) 的正向递推,这样可以一次递推求出 \(m=1\sim 10^6\) 的答案

具体地,定义一个变量 \(one\) 表示原本 \(1\) 的位置,初始 \(s_1=1\)。在之前的算法的基础上,将外层循环顺序改为 \(1\sim n\),循环内各子语句顺序倒置,原本形如 \(x\leftarrow ay\) 的语句变为 \(y\leftarrow ax\)\(m=x\) 的答案即为该次循环结束后 \(one\) 的值

时间复杂度 \(O(m\log^2 m+T)\)

代码

参考

例 5:P5518 [MtOI2019] 幽灵乐团 / 莫比乌斯反演基础练习题

给定 \(T\)\(A,B,C\),每组对 \(t=0/1/2\) 分别求出 \(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\dfrac{\operatorname{lcm}(i,j)}{\gcd(i,k)}\right)^{f(t)}\),其中 \(f(0)=1\)\(f(1)=ijk\)\(f(2)=\gcd(i,j,k)\),答案对 \(p\) 取模,\(T=70,A,B,C\le10^5\)\(p\) 为足够大的质数


由于

\[\begin{aligned} &\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\frac{\text{lcm}(i,j)}{\gcd(i,k)}\right)^{f(t)}\\ =&\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\frac{ij}{\gcd(i,j)\gcd(i,k)}\right)^{f(t)}\\ =&\frac{\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{f(t)}\right)\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Cj^{f(t)}\right)}{\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{f(t)}\right)\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,k)^{f(t)}\right)} \end{aligned}\]

因此转化为两个子问题,求出 \(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{f(t)}\)\(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{f(t)}\)

\(\text{adn}(x)=\frac{x(x+1)}2\)

接下来对于 \(t=0/1/2\) 分别解决这两个问题

t = 0

子问题 1

显然

\[\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C i=(A!)^{BC} \]

预处理阶乘即可(注意指数中对 \(p-1\) 取模,下同

子问题 2

\[\def\L{\left}\def\R{\right}\def\AB{\min(A,B)} \begin{aligned} &\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)\\ =&\L(\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)\R)^C\\ =&\L(\prod_{d=1}^{\AB}\prod_{d\mid i}\prod_{d\mid j}d^{\L[\gcd\L(\frac id,\frac jd\R)=1\R]}\R)^C\\ =&\L(\prod_{d=1}^{\AB}d^{\sum_{d\mid i}\sum_{d\mid j}\L[\gcd\L(\frac id,\frac jd\R)=1\R]}\R)^C\\ =&\L(\prod_{d=1}^{\AB}d^{\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}\sum_{D\mid i,D\mid j}\mu(D)}\R)^C\\ =&\L(\prod_{d=1}^{\AB}d^{\sum_{D=1}^{\AB/d}\mu(D)(A/(dD))(B/(dD))}\R)^C\\ =&\L(\prod_{d=1}^{\AB}\prod_{D=1}^{\AB/d}d^{\mu(D)(A/(dD))(B/(dD))}\R)^C\\ =&\L(\prod_{T=1}^{\AB}\prod_{d\mid T}d^{\mu\L(\frac Td\R)(A/T)(B/T)}\R)^C\\ =&\L(\prod_{T=1}^{\AB}\L(\prod_{d\mid T}d^{\mu\L(\frac Td\R)}\R)^{(A/T)(B/T)}\R)^C\\ \end{aligned}\]

可以 \(O(n\log n)\) 预处理 \(Tp\) 数组,\({Tp}_T=\prod_{d\mid T}d^{\mu\left(\frac Td\right)}\),每次询问数论分块

t = 1

子问题 1

显然

\[\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C i^{ijk}=\left(\prod_{i=1}^A i^i\right)^{\text{adn}(B)\text{adn}(C)} \]

预处理 \(i^i\) 的前缀积即可

子问题 2

显然

\[\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{ijk}=\left(\prod_{i=1}^A\prod_{j=1}^B \gcd(i,j)^{ij}\right)^{\text{adn}(C)} \]

\[\def\L{\left}\def\R{\right} \begin{aligned} &\prod_{i=1}^A\prod_{j=1}^B \gcd(i,j)^{ij}\\ =&\prod_{d=1}^{\min(A,B)}d^{\sum_{d|i}\sum_{d|j}[\gcd(\frac id,\frac jd)=1]ij}\\ =&\prod_{d=1}^{\min(A,B)}d^{ d^2\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}[\gcd(i,j)=1]ij}\\ =&\prod_{d=1}^{\min(A,B)}d^{ d^2\sum_{D=1}^{\min(A/d,B/d)}\mu(D)D^2\text{adn}(A/(dD))\text{adn}(B/(dD))}\\ \end{aligned}\]

\(Tmp(A,B)=\sum_{D=1}^{\min(A,B)}\mu(D)D^2\text{adn}(A/D)\text{adn}(B/D)\)(容易通过预处理加数论分块单次 \(O(\sqrt A+\sqrt B)\) 计算)

则原式 \(=\prod_{d=1}^{\min(A,B)}\left(d^{d^2}\right)^{Tmp(A/d,B/d)}\),可以再次数论分块实现

t = 2

子问题 1

\[\begin{aligned} &\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C i^{\gcd(i,j,k)}\\ =&\prod_{i=1}^A i^{\sum_{d|i}d\sum_{j=1}^B\sum_{k=1}^C[\gcd(i,j,k)=d]}\\ =&\prod_{i=1}^A i^{\sum_{d|i}d\sum_{d|j}\sum_{d|k}[\gcd(\frac id,\frac jd,\frac kd)=1]}\\ =&\prod_{i=1}^A i^{\sum_{d|i}d\sum_{d|j}\sum_{d|k}\sum_{D|\frac id,D|\frac jd,D|\frac kd}\mu(D)}\\ =&\prod_{i=1}^A i^{\sum_{D\mid i}\sum_{(dD)\mid i}d\sum_{(dD)\mid j}\sum_{(dD)\mid k}\mu(D)}\\ =&\prod_{i=1}^A i^{\sum_{D\mid i}\sum_{(dD)\mid i}d\mu(D)(B/(dD))(C/(dD))}\\ =&\prod_{d}\prod_{D}\prod_{(dD)\mid i} i^{d\mu(D)(B/(dD))(C/(dD))}\\ =&\prod_{d}\prod_{D}\prod_{i=1}^{A/(dD)} (idD)^{d\mu(D)(B/(dD))(C/(dD))}\\ =&\prod_T\prod_{d\mid T}\prod_{i=1}^{A/T} (iT)^{d\mu(\frac Td)(B/T)(C/T)}\\ =&\prod_T\prod_{d\mid T}\left(\prod_{i=1}^{A/T} i\times \prod_{i=1}^{A/T} T\right)^{d\mu(\frac Td)(B/T)(C/T)}\\ =&\prod_T\prod_{d\mid T}\left((A/T)!\times T^{A/T}\right)^{d\mu(\frac Td)(B/T)(C/T)}\\ =&\prod_T\left((A/T)!\times T^{A/T}\right)^{\sum_{d\mid T} d\mu(\frac Td)(B/T)(C/T)}\\ =&\prod_T\left((A/T)!\times T^{A/T}\right)^{\sum_{d\mid T} \varphi(T)(B/T)(C/T)}\\ \end{aligned}\]

预处理后直接分块即可

子问题 2

\[\begin{aligned} &\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C \gcd(i,j)^{\gcd(i,j,k)}\\ =&\prod_{d}\prod_{d|i}\prod_{d|j}\prod_{d|k} \gcd(i,j)^{ d[\gcd(i,j,k)=d]}\\ =&\prod_{d}\prod_{i=1}^{A/d}\prod_{j=1}^{B/d}\prod_{k=1}^{C/d} \gcd(id,jd)^{ d[\gcd(i,j,k)=1]}\\ =&\prod_{d}\prod_{i=1}^{A/d}\prod_{j=1}^{B/d}\prod_{k=1}^{C/d} \gcd(id,jd)^{ d\sum_{D|i,D|j,D|k}\mu(D)}\\ =&\prod_{d}\prod_{i=1}^{A/d}\prod_{j=1}^{B/d}\prod_{k=1}^{C/d}\prod_{D\mid i,D\mid j,D\mid k} \gcd(id,jd)^{d\mu(D)}\\ =&\prod_{d}\prod_{i=1}^{A/d}\prod_{j=1}^{B/d}\prod_{k=1}^{C/d}\prod_{D\mid i,D\mid j,D\mid k} (d\gcd(i,j))^{d\mu(D)}\\ =&\prod_d\prod_D\prod_{i=1}^{A/(dD)}\prod_{j=1}^{B/(dD)}\prod_{k=1}^{C/(dD)} (dD\gcd(i,j))^{d\mu(D)}\\ =&\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T}\prod_{k=1}^{C/T} (T\gcd(i,j))^{d\mu(\frac Td)}\\ =&\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T} (T\gcd(i,j))^{d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T} T^{d\mu(\frac Td)(C/T)}\times \prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T} \gcd(i,j)^{d\mu(\frac Td)(C/T)}\\ \end{aligned}\]

其中前一项

\[\begin{aligned} &\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T} T^{d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T} T^{d\mu(\frac Td)(A/T)(B/T)(C/T)}\\ =&\prod_T\prod_{d|T} T^{\varphi(T)(A/T)(B/T)(C/T)}\\ =&\prod_T\left(\prod_{d|T} T^{\varphi(T)}\right)^{(A/T)(B/T)(C/T)}\\ \end{aligned}\]

显然可以预处理加数论分块

后一项

\[\begin{aligned} &\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T} \gcd(i,j)^{d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T}\prod_{D\mid i,D\mid j} D^{[\gcd(i,j)=D]d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{i=1}^{A/T}\prod_{j=1}^{B/T}\prod_{D\mid i,D\mid j} D^{[\gcd(\frac iD,\frac jD)=1]d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{D}\prod_{D\mid i,i\le A/T}\prod_{D\mid j,j\le B/T} D^{[\gcd(\frac iD,\frac jD)=1]d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{D}\prod_{i=1}^{A/(DT)}\prod_{j=1}^{B/(DT)} D^{[\gcd(i,j)=1]d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{D}\prod_{i=1}^{A/(DT)}\prod_{j=1}^{B/(DT)} D^{\sum_{E\mid i,E\mid j}\mu(E)d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{D}\prod_E\prod_{E\mid i,i\le A/(DT)}\prod_{E\mid j,j\le B/(DT)} D^{\mu(E)d\mu(\frac Td)(C/T)}\\ =&\prod_T\prod_{d|T}\prod_{D}\prod_E D^{\mu(E)d\mu(\frac Td)(A/(DET))(B/(DET))(C/T)}\\ =&\prod_T\prod_{D}\prod_E D^{\mu(E)\varphi(T)(A/(EDT))(B/(EDT))(C/T)}\\ =&\prod_T\prod_F\prod_{D\mid F}D^{\mu(\frac FD)\varphi(T)(A/(FT))(B/(FT))(C/T)}\\ \end{aligned}\]

之前预处理了 \({Tp}_T=\prod_{d\mid T}d^{\mu\left(\frac Td\right)}\),带入可得

\[\begin{aligned} &\prod_T\prod_F\prod_{D\mid F}D^{\mu(\frac FD)\varphi(T)(A/(FT))(B/(FT))(C/T)}\\ =&\prod_T\prod_F{Tp}_F^{^{\varphi(T)(A/(FT))(B/(FT))(C/T)}}\\ =&\prod_T\left(\prod_F{Tp}_F^{(A/(FT))(B/(FT))}\right)^{\varphi(T) (C/T)}\\ \end{aligned}\]

\(Ftp(n,m)=\prod_F{Tp}_F^{^{(n/F)(m/F)}}\),则上式等于 \(\prod_T\left(Ftp(A/T,B/T)\right)^{^{\varphi(T) (C/T)}}\),容易通过数论分块套数论分块解决

时间复杂度

假定 \(A,B,C\) 同阶,\(n\) 为各组数据中 \(A,B,C\) 的最大值,则总时间复杂度为:

\[O\left(n\log n+T\left(\left(\sum_{i=1}^{\sqrt A}\sqrt i+\sum_{i=1}^{\sqrt A}\sqrt\frac Ai\right)\log p+A\right)\right) \]

其中 \(\sum_{i=1}^{\sqrt A}\sqrt i\) 显然不超过 \(O(A^{3/4})\)

\[\begin{aligned} &\sum_{i=1}^{\sqrt A}\sqrt\frac Ai\\ =&\sum_{i=1}^{\sqrt A}\frac{\sqrt A}{\sqrt i}\\ =&\sum_{j=1}^{A^{1/4}}\frac{\sqrt A}j\sum_{i=1}^{\sqrt A}[j\le \sqrt i<j+1]\\ =&\sum_{j=1}^{A^{1/4}}\frac{\sqrt A}j\sum_{i=1}^{\sqrt A}[j^2\le i<j^2+2j+1]\\ =&\sum_{j=1}^{A^{1/4}}\frac{\sqrt A}j\cdot O(j)\\ =&\sum_{j=1}^{A^{1/4}}O(\sqrt A)\\ =&O(A^{3/4})\\ \end{aligned}\]

因此总时间复杂度为 \(O(n\log n+TA^{3/4}\log p)\)


代码

参考

例 6:P4449 于神之怒加强版

给定 \(n,m,k\),求出 \(\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\),多次 \(T\le2000\)\(n,m,k\le5\times10^6\)

根据一般套路,原式可化为 \(\sum_{T=1}^{\min(n,m)}(n/T)(m/T)\sum_{d\mid T}d^k\mu(\frac Td)\)

\(g(T)=\sum_{d\mid T}d^k\mu(\frac Td)\),则 \(g=\text{id}_k\ast \mu\)

由于 \(\text{id}_k\)\(\mu\) 都是积性函数,根据狄利克雷卷积的性质,\(g\) 也是积性函数,因此可以线性筛

代码

例 7:hydro #H1060. 绝世傻逼题

给定 \(t\)\(A,B,C,D,E\),其中 \(t\le2000,1\le A,B,C,D,E\le5\times10^7\),分别求出以下式子的值

\[\def\lcm{\operatorname{{lcm}}} \sum_{a=1}^A\sum_{b=1}^B\sum_{c=1}^C\sum_{d=1}^D\sum_{e=1}^E\frac{\prod_{[x,y,z]}\gcd(x,y,z)}{(\gcd_{[x,y]}\lcm(x,y))^3\gcd_{[x,y,z]}\lcm(x,y,z)} \]

其中 \([x,y,z]\) 表示取遍 \(\{a,b,c,d,e\}\) 的大小为三的子集,\([x,y]\) 表示取遍大小为二的子集

考虑化简求和中的分式

实际上其等于 \(\gcd(a,b,c,d,e)^6\),证明需要分别考虑每个质因子,将 \(\gcd\)\(\operatorname{lcm}\) 转化为 \(\min\)\(\max\),然后假定五个数中该质因子幂次的顺序,化简后即可证

于是转化为求

\[\sum_{T=1}^{\min(A,B,C,D,E)}\mu(T)(A/T)(B/T)(C/T)(D/T)(E/T)\sum_{f\mid T}f^6\mu\left(\frac Tf\right) \]

数论分块即可,时间复杂度 \(O(V+t\sqrt V)\)

代码

题单

\(\text{vjudge}\)Number Theory 1,pw: edgeedgeweloveyou

\(\text{luogu}\)24.12.11 math1

参考

  1. \(\text{12.11 math1.pdf \; \;by Tx\_Lcy}\)
  2. 莫比乌斯反演 oi wiki
posted @ 2025-04-06 20:50  Hstry  阅读(7)  评论(0)    收藏  举报