幂数 !
#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
给定 \(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)
对 \(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\) 单调不降。
- \(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)\),也是可以的。
标签:gcd,leq,2024.8,sum,varphi,数论,cdots,笔记,sqrt From: https://www.cnblogs.com/caijianhong/p/18341994