快速幂textbf{快速幂}快速幂:快速幂就是快速算底数的 nnn 次幂,其时间复杂度为 OOO, 与朴素的 OOO 相比效率有了极大的提高,快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算,这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。
快速幂textbf{快速幂}快速幂:快速幂就是快速算底数的 nnn 次幂。其时间复杂度为 O(log2n)O(log_2n)O(log2n), 与朴素的 O(n)O(n)O(n) 相比效率有了极大的提高。快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。 例如: 相对于一般的快速幂,矩阵快速幂仅仅是把他的底数和乘数换成了矩阵形式,而相应的乘法等运算也遵循矩阵的运算法则。对于矩阵的基本运算这里不再做赘述。 取模textbf{取模}取模:a%pa % pa%p (或 a mod pa space mod space pa mod p),表示 aaa 除以 ppp 的余数。 现在给你一个递推公式: a(n)={1,n=02,n=12×a(n−1)−a(n−2),n>1a(n) = begin{cases} 1, & n=0 \ 2, & n=1 \ 2 times a(n-1)-a(n-2) , & n>1 \ end{cases}a(n)=⎩⎪⎨⎪⎧1,2,2×a(n−1)−a(n−2),n=0n=1n>1 求该数列的第 nnn 项。由于答案可能过大,你只需要输出答案对 998244353998244353998244353 取模后的值。