题解:P12847 [蓝桥杯 2025 国 A] 斐波那契数列

这题还挺有意思。

首先观察到序列 \(G\) 的定义

\[G_1=2,\quad G_2=3,\quad G_i=G_{i-1}\times G_{i-2}\quad(i>2) \]

意味着每一项都可拆成若干个 \(2\)\(3\) 的幂相乘。

\[G_i=2^{a_i}\,3^{b_i}, \]

则由递推可知

\[(a_1,b_1)=(1,0),\quad(a_2,b_2)=(0,1),\quad(a_i,a_{i-1})\mapsto (a_{i-1}+a_{i-2},\,b_{i-1}+b_{i-2}) \]

\((a_i)\)\((b_i)\) 都是满足斐波那契关系的序列,只是初值不同。

进一步令

\[P_n=\prod_{i=1}^nG_i \]

\[P_n =\prod_{i=1}^n2^{a_i}3^{b_i} =2^{\sum_{i=1}^n a_i}\;3^{\sum_{i=1}^n b_i}. \]

根据斐波那契数列前缀和的性质,可证明

\[\sum_{i=1}^n a_i=F_n,\qquad \sum_{i=1}^n b_i=F_{n+1}-1, \]

其中 \(F_k\) 为最常见的斐波那契数列(\(F_1=1,F_2=1\))。这样一来问题就转化为

\[P_n =2^{F_n}\times3^{F_{n+1}-1}\bmod998244353. \]

由于题目中 \(n\) 可达 \(10^{18}\),必须在 \(O(\log n)\) 时间内计算斐波那契数对 \(M-1\)(其中 \(M=998244353\))的值,以及在 \(O(\log n)\) 时间内做模幂运算。

前者可用快速倍增法直接求得 \((F_n,F_{n+1})\bmod (M-1)\),后者用快速幂完成。

注意指数要对 \(M-1\) 取模是因为 \(M\) 为质数,可利用费马小定理将幂指数降模。

link

posted @ 2025-06-18 11:50  薛儒浩  阅读(37)  评论(0)    收藏  举报