P4920 题解

发布时间 2023-06-23 23:04:24作者: liangbowen

前言

题目传送门!

更好的阅读体验?

没看题解把未来程序切了,很高兴,来写篇题解!

这篇题解在博客园里观看,效果明显更佳,请前往博客园

Program1

简单的。显然答案为 \((a\times b) \bmod c\),转成 __int128 后暴力乘即可。

代码有手就行。

Program2

简单的。给定 \(n\)\(mod\),有递推式

\[a_0 = 1, b_0 = 0, c_0 = 0 \]

\[\begin{cases} a_i = 2\times b_i-a_{i-1}+c_{i-1}=a_{i-1}+2\times b_{i-1}+c_{i-1} \\ b_i = a_{i-1} + b_{i-1} \\ c_i = 2\times b_i-a_i+c_{i-1}=a_{i-1}\\ \end{cases} \]

答案为 \(a_n - 2 \times b_n + c_n\)。但是 \(n\)long long 级别,矩阵快速幂即可。具体地:

  • 矩阵定义为 \(\begin{bmatrix}a_i, b_i, c_i\end{bmatrix}\)
  • 转移:\(\begin{bmatrix}a_{i-1}, b_{i-1}, c_{i-1}\end{bmatrix}\times \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}=\begin{bmatrix}a_i, b_i, c_i\end{bmatrix} \)

代码有手就行。依然是使用 __int128