【笔记】数论 2024.8.4

幂数 !

#6222. 幂数 !(加强版) - Problem - LibreOJ (loj.ac)

转写为 \(a^2b^3\) 要求 \(b\) 没有平方因子,这样是双射对应。那么即求

\[\sum_{i=1}^{\sqrt[3]{n}}\mu^2(i)\left\lfloor\sqrt{\frac{n}{i^3}}\right\rfloor \]

后面那个大根号可以整除分块?转化为求 \(\mu^2(i)\) 的前缀和。

\[\mu^2(n)=\sum_{d^2|n}\mu(d) \]

\[\sum_{i=1}^n\mu^2(i)=\sum_{i=1}^n\sum_{d^2|i}\mu(d)=\sum_{d=1}^{\sqrt n}\mu(d)\left\lfloor\frac{n}{d^2}\right\rfloor \]

甚至还能整除分块。

约数函数(单点)

\[d(n)\sim O(n^{1.066/\ln\ln n}) \]

一种 \(O(n^{1/3}/\ln n)\) 的求约数函数方法:首先除去所有 \(\leq n^{1/3}\) 的质因子。那么剩下要么是一个质数、一个质数的平方、两个质数的乘积。前两个都可以判断,最后一个不关心具体怎么分解。

约数函数(DIVCNT1)

DIVCNT1 - Counting Divisors - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

\[\sum_{i=1}^nd(i)=\sum_{i=1}^n\left\lfloor\frac{n}{i}\right\rfloor \]

枚举每个约数计算贡献。相当于求反比例函数下整点个数。

更快的前缀和计算:先暴力计算 \(\leq n^{1/3}\) 的约数的贡献。剩下的用皮克定理拟合,将 \(y\leq n^{1/2}\) 的部分划分为很多梯形,需要满足梯形中没有多余整点,证明有 \(O(n^{1/3})\) 段。需要二分一个新的斜率去拟合,说是使用 SB 树二分。

what?

线性筛自然数幂(i^m)

在每个质数 \(p\) 处算 \(p^m\),然后利用它是完全积性函数的性质做线性筛。由质数分布密度可知是线性的。

线性筛自然数幂(i^i)

\[y=xp\implies y^y=(xp)^{xp}=(x^x)^p(p^p)^x \]

\(p^{px}\) 可以在质数点处光速幂一下。注意到只有 \(\leq n^{1/2}\) 的质数可能需要用。这部分甚至不足线性。

\((x^x)^p\)\(p\) 枚举到下一个质数时,观察差,发现是 \(O(\log \frac{n}{x})\) 的。所以是 \(\sum_{x=1}^n\log \frac{n}{x}\)。竟然是线性的。

也就是说

\[n\log n-\log1-\log2\cdots-\log n=O(n) \]

Min_25 筛不会但是要学

洲阁筛也不会但是要学

这中间有好多个题都没听

后面全掉线了,nm

OI-Wiki 或者历史上的今天。

[Project Euler 530] GCD of Divisors

GCD of Divisors

给定 \(f(n)=\sum_{d|n}\gcd(d,n/d)\) 的前缀和 \(F(n)\)\(n=10^{15}\)

\[\sum_{i=1}^n\sum_{d|i}\gcd(d, i/d)=\sum_{i=1}^n\sum_{d|i}\sum_{k|d, k|i/d}\varphi(k)\\ =\sum_{i=1}^n\sum_{k|i}\varphi(k)\sum_{k|d,d|i/k}1\\ =\sum_{i=1}^n\sum_{k^2|i}\varphi(k)d(i/k^2)\\ =\sum_{k=1}^{\sqrt n}\varphi(k)D(\left\lfloor n/k^2\right\rfloor)\\ \]

直接暴力,用 \(\sqrt n\)\(D(n)\)(约数函数前缀和),积分结果是对的。

[CF571E] Geometric Progressions

Geometric Progressions - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

只需考虑每个质因子的指数。注意,下标可能不同。所以有个 exgcd 过程。

写这个题

[LOJ6686] Stupid GCD

#6686. Stupid GCD - Problem - LibreOJ (loj.ac)

下面可能是错的,不知道哪一步的问题。

\[\sum_{i = 1} ^ {n} \gcd\left(\left\lfloor\sqrt[3]{i}\right\rfloor, i\right)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{i=r^3}^{\min(n, (r+1)^3-1)}\gcd(r, i)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{i=r^3}^{\min(n, (r+1)^3-1)}\sum_{d|r, d|i}\varphi(d)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{d|r}\varphi(d)({\min(n, (r+1)^3-1)}/d-(r^3-1)/d)\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({\min(n, (r+1)^3-1)}/d-(r^3-1)/d)\\ \]

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3-1)/d\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3/d-1)\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{i=1}^{\sqrt[3]{n}/d}(d^2i^3-1)\\ =trivial \]

可以整除分块。

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({\min(n, (r+1)^3-1)}/d)\\ \]

特判最后一项

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({(r+1)^3-1)}/d\\ \sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3+3r^2+3r)/d\\ =trivial \]

说说如何特判最后一项

\[\sum_{i=1}^n\gcd(r, i)=\sum_{i=1}^n\sum_{d|i, d|r}\varphi(d)=\sum_{d|r}\varphi(d)(n/d) \]

可以根号。


说对于同一个 \(r\),那个 \(\gcd\) 有循环节。然后有更简单的做法。然后为什么有杜教筛部分?要求 \(\varphi\)\(\varphi\cdot Id\) 的前缀和,不知道为什么。?

杜教筛相当于做除法。

[POI2002] 超级马

\(n\leq 10^6, |P|, |Q|\leq 10^9\)

整系数:辗转相除直到只剩一个向量的第一维非零。然后可以裴蜀定理。

非负整数:可以选出三个向量组成锐角三角形,然后不会了,

[集训队作业2018] 石像

【集训队作业2018】石像 - 题目 - Universal Online Judge (uoj.ac)

\[\left(\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^m{\left(\sigma_0\left(\gcd\left(a_1,a_2,\ldots,a_n\right)^3\right)\right)}^3\prod_{i=1}^k\left[a_{x_i}\leq a_{y_i}\right]\right)\bmod 2^{32} \]

\(n\) 太小,考虑状压拓扑序,处理出有恰好 \(x\) 种本质不同权值的方案数。还是预处理什么东西,不清楚。

\[f(x):=\sigma_0(x^3)^3, g:=f*\mu \]

\[\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^mf(\gcd(a_1, \cdots, a_n))\\ =\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^m\sum_{k|a_1, a_2,\cdots, a_n}g(k)\\ =\sum_{k=1}^mg(k)\sum_{a_1=1}^{m/k}\sum_{a_2=1}^{m/k}\cdots\sum_{a_n=1}^{m/k}(\text{一些刚才算过的东西}) \]

\[f(p^c)=(3c+1)^3 \]

\[g(p^c)=f(p^c)-f(p^{c-1})=(\text{一个关于c的二次函数}) \]

[集训队作业2018] 人类的本质

【集训队作业2018】人类的本质 - 题目 - Universal Online Judge (uoj.ac)

\(y_j=i/\gcd(i, x_j)\),则

\[\operatorname{lcm}_j\{i/y_j\}=i/\gcd_j\{y_j\} \]

\(\varphi(y)\) 计算了有多少个 \(x\) 贡献给 \(y\)。这个计算过程很傻逼的不抄了(提示:需要用到 \(\mu*Id=\varphi\))。

\[f(n):=\sum_{1\leq j\leq k, y_j|n}\frac{n}{\gcd(y_1, y_2, \cdots, y_k)}\varphi(y_1)\varphi(y_2)\cdots\varphi(y_k) \]

服了,这是积性函数。

\[f(p^c)=p^c\sum_{\min(c_1, \cdots, c_k)=m}p^{-m}\prod_j\varphi(p^{c_j}) \]

\[g(p, m):=\sum_{c_i\geq m}\prod_i\varphi(p^{c_i})=\sum_{c_1\geq m}\varphi(p^{c_1})\sum_{c_2\geq m}\varphi(p^{c_1})\cdots\\ =((p-1)(p^{lim-1}-p^{m-1}))^k \]

所以 \(f(p^c)\) 可以被快速计算,后面就是筛。

[CF1770F] Koxia and Sequence

洛谷题解写的好啊!!!至于花花的做法没听懂

[JROI-4] 少女幻葬

P8322 『JROI-4』少女幻葬 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

\(f(i, j)\) 表示当前这个数是 \(j\),它与前面那个的数 \(\gcd=i\)。注意只有 \(O(nm\log m)\)\(f\)

\(g(i, j)\) 表示当前这个数是 \(j\),它要求与后面那个数的 \(\gcd=i\)。注意只有 \(O(nm\log m)\)\(g\)

\[f_{i, j}=\sum_{\gcd(j, k)=i}g_{i, k} \]

(k)-i-(j)

\[\implies A_m=\sum_{\gcd(m, j)=1}B_j=\cdots=\sum_{k|m}\mu(k)(C_k:=\sum_{k|j}B_j) \]

\(B\) 做两次迪利克雷前缀和,第一次求 \(C\),第二次求 \(A\)。迪利克雷前缀和复杂度 \(O(m\log\log m)\)

\[g_{i, j}=\sum_{\gcd(k, i)=1}f_{k, j} \]

-k-(j)-i-

有个更牛的,因为是 \(\gcd()=1\),相当于质因子集合不交。变成集合幂级数求解。比迪利克雷前缀和还牛。复杂度有很多个数不胜数的 \(\log\),但是是复合的。

[Hangzhou22I] Guess Cycle Length

随机撒 \(10^3\) 个点,取节点编号最大值,期望大小为 \(n_0=\frac{10^3}{10^3+1}n\)。也就是说 \(n-n_0\) 期望是 \(10^6\) 的样子。撒完点之后,走 \(10^3\) 步,记下 \(10^3\) 个节点编号,然后走 \(n_0-10^3\) 步,然后一次走 \(10^3\) 步,期望 \(10^3\) 步后能走回刚才记下的编号。

基于值域预处理的快速 GCD

P5435 基于值域预处理的快速 GCD - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

\(B:=\sqrt V\)。预处理 \(\gcd[i\leq B][j\leq B]\),可以 \(O(V)\)

对所有 \(\leq V\) 的数,要么是

  • 质数;
  • 被分解成若干个互质的 \(\leq B\) 的数。

\(x=a_1a_2a_3, y\) 为例,\(a_1, a_2, a_3\) 两两互质,那么互不影响,直接写

\[\gcd(a_1, y\bmod a_1)\gcd(a_2, y\bmod a_2)\gcd(a_3, y\bmod a_3) \]

但是分解的项数不能多。考虑怎么分解。令 \(x=\prod_{i=1}^kp_i\)\(p\) 单调不降。

  1. \(p_k>B\)\((p_k, x/p_k)\) 即可。
  2. 找一个前缀积 \(s_{i-1}\) 满足 \(s_{i-1}<B, s_i>B\),那么 \((s_{i-1}, p_i, x/s_i)\) 为所求。

这个东西还是带了一个 \(O(\log V)\)。更猛的是,你找一个 \(x\) 的最小的质因子 \(p\),那么 \(x/p\) 的分解方案的最小的数乘上 \(p\) 就是 \(x\) 的分解。

事实上我先做 \(O(d)\) 次辗转相除,将问题规模缩小至 \(O(V/2^d)\),也是可以的。

posted @ 2024-08-04 17:17  caijianhong  阅读(99)  评论(0编辑  收藏  举报