【笔记】数论 2024.8.4
幂数 !
#6222. 幂数 !(加强版) - Problem - LibreOJ (loj.ac)
转写为 \(a^2b^3\) 要求 \(b\) 没有平方因子,这样是双射对应。那么即求
后面那个大根号可以整除分块?转化为求 \(\mu^2(i)\) 的前缀和。
甚至还能整除分块。
约数函数(单点)
一种 \(O(n^{1/3}/\ln n)\) 的求约数函数方法:首先除去所有 \(\leq n^{1/3}\) 的质因子。那么剩下要么是一个质数、一个质数的平方、两个质数的乘积。前两个都可以判断,最后一个不关心具体怎么分解。
约数函数(DIVCNT1)
DIVCNT1 - Counting Divisors - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
枚举每个约数计算贡献。相当于求反比例函数下整点个数。
更快的前缀和计算:先暴力计算 \(\leq n^{1/3}\) 的约数的贡献。剩下的用皮克定理拟合,将 \(y\leq n^{1/2}\) 的部分划分为很多梯形,需要满足梯形中没有多余整点,证明有 \(O(n^{1/3})\) 段。需要二分一个新的斜率去拟合,说是使用 SB 树二分。
what?
线性筛自然数幂(i^m)
在每个质数 \(p\) 处算 \(p^m\),然后利用它是完全积性函数的性质做线性筛。由质数分布密度可知是线性的。
线性筛自然数幂(i^i)
\(p^{px}\) 可以在质数点处光速幂一下。注意到只有 \(\leq n^{1/2}\) 的质数可能需要用。这部分甚至不足线性。
\((x^x)^p\) 在 \(p\) 枚举到下一个质数时,观察差,发现是 \(O(\log \frac{n}{x})\) 的。所以是 \(\sum_{x=1}^n\log \frac{n}{x}\)。竟然是线性的。
也就是说
草
Min_25 筛不会但是要学
洲阁筛也不会但是要学
这中间有好多个题都没听
后面全掉线了,nm
OI-Wiki 或者历史上的今天。
[Project Euler 530] GCD of Divisors
给定 \(f(n)=\sum_{d|n}\gcd(d,n/d)\) 的前缀和 \(F(n)\),\(n=10^{15}\)。
直接暴力,用 \(\sqrt n\) 求 \(D(n)\)(约数函数前缀和),积分结果是对的。
[CF571E] Geometric Progressions
Geometric Progressions - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
只需考虑每个质因子的指数。注意,下标可能不同。所以有个 exgcd 过程。
写这个题
[LOJ6686] Stupid GCD
#6686. Stupid GCD - Problem - LibreOJ (loj.ac)
下面可能是错的,不知道哪一步的问题。
可以整除分块。
特判最后一项
说说如何特判最后一项
可以根号。
说对于同一个 \(r\),那个 \(\gcd\) 有循环节。然后有更简单的做法。然后为什么有杜教筛部分?要求 \(\varphi\) 和 \(\varphi\cdot Id\) 的前缀和,不知道为什么。?
杜教筛相当于做除法。
[POI2002] 超级马
\(n\leq 10^6, |P|, |Q|\leq 10^9\)。
整系数:辗转相除直到只剩一个向量的第一维非零。然后可以裴蜀定理。
非负整数:可以选出三个向量组成锐角三角形,然后不会了,
[集训队作业2018] 石像
【集训队作业2018】石像 - 题目 - Universal Online Judge (uoj.ac)
\(n\) 太小,考虑状压拓扑序,处理出有恰好 \(x\) 种本质不同权值的方案数。还是预处理什么东西,不清楚。
[集训队作业2018] 人类的本质
【集训队作业2018】人类的本质 - 题目 - Universal Online Judge (uoj.ac)
令 \(y_j=i/\gcd(i, x_j)\),则
\(\varphi(y)\) 计算了有多少个 \(x\) 贡献给 \(y\)。这个计算过程很傻逼的不抄了(提示:需要用到 \(\mu*Id=\varphi\))。
服了,这是积性函数。
所以 \(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\)。
(k)-i-(j)
对 \(B\) 做两次迪利克雷前缀和,第一次求 \(C\),第二次求 \(A\)。迪利克雷前缀和复杂度 \(O(m\log\log m)\)。
-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\) 两两互质,那么互不影响,直接写
但是分解的项数不能多。考虑怎么分解。令 \(x=\prod_{i=1}^kp_i\),\(p\) 单调不降。
- \(p_k>B\),\((p_k, x/p_k)\) 即可。
- 找一个前缀积 \(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)\),也是可以的。
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18341994