数论
在线 \(O(1)\) 逆元
预处理 \([1, k]\) 逆元,找到一个 \(u\) 使得 \(xu \bmod p \leq k\),则 \(x^{-1}=(xu)^{-1} \cdot u\)。
设 \(x=qB+r\),其中 \(B=p^{1/3}\),\(xu=quB+ru\)。凭感觉 \(xu \bmod p\) 的分布很均匀,因此我们可以让 \(u\) 小一些。\(u \leq p^{1/3}\) 时 \(ru \leq p^{2/3}\)。只要让 \(qBu \bmod p \leq p^{2/3}\) 就行了。
我们进行预处理,对每个 \(q\) 找一个 \(u\) 让该条件满足。注意到 \(B,u\) 都不大,固定 \(B\) 和 \(u\),当 \(q\) 增加时式子只会增加 \(p^{2/3}\) 左右,远小于可行区间 \([kp, kp+p^{2/3}]\),因此我们可以直接让 \(q\) 跳跃,\(O(1)\) 找到下一个合法 \(q\)。总值域 \(p^{2/3}Bu\),跳跃时增加 \(p\),共跳跃 \(p^{-1/3}Bu\) 次,每次跳跃位于长度为 \(p^{2/3}\) 的区间中,带来 \(p^{2/3}/(Bu)\) 个 \(q\),故因此只有 \(p^{1/3}\) 个合法 \(q\)。一共 \(p^{1/3}\) 个 \(u\),故预处理的复杂度为 \(p^{2/3}\)。
P7325
参考自魏老师的题解 orz。
考虑贡献即为 \(af_{p-1}+bf_{p}\)。
\(f_n=f_{n-1}+f_{n-2}\) 的性质:在模 \(m\) 意义下有长度为 \(O(m)\) 的纯循环节。
首先有 \(af_{i-1}\equiv-bf_{i} \pmod m\),找到 \(d=\gcd(a, b, m)\) 并约去得到 \(\frac{a}{d} f_{i-1} \equiv \frac{b}{d}f_i \pmod{\frac{m}{d}}\),这里把 \(b\) 取反。
我们想要把 \(\frac{b}{d}\) 除到左边去。令 \(d'=\gcd(\frac{b}{d}, \frac{m}{d})\),注意到一定有 \(d' \perp a\),所以一定有 \(d' \mid f_{i-1}\),所以有 \(\frac{a}{d}\frac{f_{i-1}}{d'} \equiv \frac{b}{dd'}f_i \pmod {\frac{m}{dd'}}\),除过去得到 \(\frac{a}{d} (\frac{b}{dd'})^{-1}\frac{f_{i-1}}{d}\equiv f_i \pmod{ \frac{m}{dd'}}\),可以证明 \(\frac{f_{i-1}}{d'} \perp \frac{m}{dd'}\)。
提前处理出所有 \((d, d', f_p/(f_{p-1}/d') \bmod \frac{m}{dd'})\) 塞进 map 中,这囊括了答案的所有信息。
有结论 \(d'=\gcd(f_{p-1},\frac{m}{d})\),因此 \(d'\) 不需要枚举。复杂度大概是 \(O(m \log \log m + n) \log m\),其中 \(m \log \log m\) 是 \(m\) 的约数和的数量级。
P5572
设 \(f(n, d) = \sum_{i=1}^{n} \varphi(id)\),这可以以 \(O(n \ln n)\) 的复杂度预处理。
原式变为 \(\sum_{T=1}^m \sum_{d \mid T} \mu(d) f(n/T, d) f(m/T, d)\)。
考虑根号分治,当 \(T < \sqrt{n}\) 时,枚举 \(d\)。否则设 \(g(n, m, s) = \sum_{T=1}^s \sum_{d \mid T} \mu(d) f(n, d) f(m, d)\),一段让 \(n/d\) 和 \(m/d\) 相等的 \(T \in [l, r]\) 的贡献之和为 \(g(n/T, m/T, r) - g(n/T, m/T,l-1)\)。
exCRT
用 \(a+bx_i \equiv c_i \pmod {p_i}\) 合并方程,裴蜀定理判无解。
exBSGS
让方程不断除以 \(\gcd(a, p)\)。
$\frac{a}{d}a^{x-1} \equiv \frac{b}{d} \pmod {\frac{p}{d}} \Longrightarrow a^{x-1} \equiv $
P6610
用 CRT 转化为模奇素数。
注意到 \(a^2 \equiv x \pmod p\) 的解的个数是 \(x^{\frac{p-1}{2}}+1\),我们要求的即
\(\newcommand \L[2]{(\frac{#1}{#2})}\) \(\sum_{a}(\L{a}{p}+1)(\L{x-a}{p}+1) = p+\sum_a \L{ax-a^2}{p} = p+ \sum_{a=1}^{p-1} \L{x/a-1}{p}\)。
注意到 \(x \neq 0\) 时 \(a/x\) 取遍一个缩系,而缩系内勒让德记号可一一对应得到 \(0\),故答案为 \(p-\L{-1}{p}\)。\(x=0\) 时原式即 \(p+(p-1)\L{-1}{p}\)。
本文来自博客园,作者:purplevine,转载请注明原文链接:https://www.cnblogs.com/purplevine/p/18059243