数学题和光速幂
作者:互联网
\[a_n=\begin{cases}
-3,&n=0\\
-6,&n=1\\
-12,&n=2\\
3a_{n-1}+a_{n-2}-3a_{n-3}+3^n,&n>2
\end{cases}\]
注意到这是个常系数非齐次线性递推。
特征方程是
\[r^3-3r^2-r+3=0\\ (r-1)(r+1)(r-3)=0\]解得特征根为
\[r_1=1,r_2=3,r_3=-1 \]那么相伴线性齐次递推关系的一个解为
\[a_n=\alpha_1+3^n\alpha_2+(-1)^n\alpha_3 \]注意到这个 \(3^n\),其底数为特征根,那么根据定理 \(6\),一个特解可以写成 \(a_n=nC3^n\) 的形式。
那么把它带进原式中,得到
\[nC3^n=3(n-1)C3^{n-1}+(n-2)C3^{n-2}-3(n-3)C3^{n-3}+3^n \]解得 \(C=\frac{9}{8}\)。
因此原式解为
\[a_n=\alpha_1+3^n\alpha_2+(-1)^n\alpha_3+\frac{9}{8}\times 3^n\times n \]带到初始条件里列方程组
\[\begin{cases} -3=\alpha_1+\alpha_2+\alpha_3\\ -6=\alpha_1+3\alpha_2-\alpha_3+\frac{27}{8}\\ -12=\alpha_1+9\alpha_2+\alpha_3+\frac{81}{4}\\ \end{cases}\]经过一通爆算得
\[\begin{cases} \alpha_1=\frac{9}{8}\\ \alpha_2=-\frac{117}{32}\\ \alpha_3=\frac{15}{32}\\ \end{cases}\]于是最终解就是
\[a_n=\frac{9}{8}-\frac{117\times 3^n}{32}+\frac{(-1)^n\times 15}{32}+\frac{9\times 3^n\times n}{8} \]逆元可以预处理,复杂度瓶颈在算 \(3^n\) 上,朴素快速幂复杂度 \(O(T\log n)\),实际上 \(n\leq 2^{64}-1\),爆炸了!
然后考虑欧拉定理降幂后快速幂,这样复杂度为 \(O(T\log p)\),实际上 \(T\times\log p\leq 5\times 10^7\times 30=1.5\times 10^9\),也爆炸了!
接下来就需要光速幂。
考虑先降幂,然后对指数分块,设块长为 \(B\),对于每个 \(3^n\),我们将其分解为 \(3^{Bk+s}\),其中 \(s<B\),那么我们预处理出所有的 \(3^{Bk}\) 的值,其中 \(Bk\leq p\),这部分花费 \(O(\frac{p}{B})\),然后预处理所有的 \(3^{s}\) 的值,其中 \(s<B\),这部分花费 \(O(B)\),取 \(B=O(\sqrt{p})\),预处理时间 \(O(\sqrt{p})\),询问直接找到整块和散块的乘起来,时间复杂度 \(O(1)\)。
总时间复杂度 \(O(\sqrt{p}+T)\)。
标签:frac,光速,32,复杂度,times,alpha,数学题,cases 来源: https://www.cnblogs.com/yukari1735/p/16673890.html