其他分享
首页 > 其他分享> > 数学题和光速幂

数学题和光速幂

作者:互联网

P5517 [MtOI2019]幻想乡数学竞赛

\[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