問題一覧 > 通常問題

No.3227 Matrix Query

レベル : / 実行時間制限 : 1ケース 8.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 58
作問者 : ジュ・ビオレ・グレイス / テスター : 👑 p-adic
ProblemId : 12491 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-07-31 21:31:41

時間制限

本問題の時間制限は 8000ms です。

問題文

入力から正整数 $K, N$ が与えられます。はじめに $2 \times 2$ 行列の列 $X^{(1)}, \dots, X^{(N)}$ が入力から $2\times 2$ 行列 $A^{(1)}, \dots, A^{(N)}$ と与えられます。
以下の $Q$ 個のクエリを順番に処理し、結果を出力してください。

各クエリは $1 \leq i \leq N$ となる整数 $i$, $2\times 2$ 行列 $Y$ 及び $1 \leq L \leq R \leq N$ を満たす整数 $L, R$ からなる4つ組 $(i, Y, L, R)$ です。
このクエリを次のように処理します:

  1. 行列 $X^{(i)}$ に $Y$ を代入する
  2. 行列の積 $Z = X^{(L)} \cdots X^{(R)} = \begin{pmatrix}a & b \\ c & d\end{pmatrix}$ を計算し、$a, b, c, d$ を $K$ で割った余り $a', b', c', d'$(以降クエリの結果と呼ぶ)を求める

ただし、整数を $K$ で割った余りは常に $0$ 以上 $K$ 未満です。

入力

$K \ N$
$A^{(1)}_{1, 1} \ A^{(1)}_{1, 2}$
$A^{(1)}_{2, 1} \ A^{(1)}_{2, 2}$
$\vdots$
$A^{(N)}_{1, 1} \ A^{(N)}_{1, 2}$
$A^{(N)}_{2, 1} \ A^{(N)}_{2, 2}$
$Q$
$i_1 \ L_1 \ R_1$
$Y^{(1)}_{1, 1}, Y^{(1)}_{1, 2}$
$Y^{(1)}_{2, 1}, Y^{(1)}_{2, 2}$
$\vdots$
$i_Q \ L_Q \ R_Q$
$Y^{(Q)}_{1, 1}, Y^{(Q)}_{1, 2}$
$Y^{(Q)}_{2, 1}, Y^{(Q)}_{2, 2}$

$2 \leq K < 2^{31},$
$1 \leq N \leq 10^5,$
$1 \leq Q \leq 10^5,$
$1 \leq i_q \leq N,$
$1 \leq L_q \leq R_q \leq N$
$-10^8 \leq A^{(n)}_{i, j}, \, Y^{(n)}_{i, j} \leq 10^8$ は整数です。

$A^{(n)} = \begin{pmatrix} A^{(n)}_{1, 1} & A^{(n)}_{1, 2} \\ A^{(n)}_{2, 1} & A^{(n)}_{2, 2}\end{pmatrix}, \ Y^{(q)} = \begin{pmatrix} Y^{(q)}_{1, 1} & Y^{(q)}_{1, 2} \\ Y^{(q)}_{2, 1} & Y^{(q)}_{2, 2}\end{pmatrix}$ とし、
$q$ 番目のクエリは $(i_q, Y^{(q)}, L_q, R_q)$ です。

出力

$q$ 番目までのクエリを順に処理した際のクエリの結果 $a', b', c', d'$ を

$a' \ b' \\ c' \ d'$
と各 $q$ について順番に出力してください。
つまり、$2q-1, \, 2q$ 行目に $q$ 番目までのクエリを順に処理した際の「クエリの結果」を出力してください。
最後に改行してください。

サンプル

サンプル1
入力
100 3
1 2
3 4
1 3
5 7
2 4
1 3
2
2 2 3
3 1
-18 5
1 1 2
9 2
8 3
出力
7 15
69 43
91 19
70 23

はじめ、$X^{(1)} = \begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix}, \ X^{(2)} = \begin{pmatrix}1 & 3 \\ 5 & 7\end{pmatrix}, \ X^{(3)} = \begin{pmatrix}2 & 4 \\ 1 & 3\end{pmatrix}$ です。
また、$Y^{(1)} = \begin{pmatrix}3 & 1 \\ -18 & 5\end{pmatrix}, \ Y^{(2)} = \begin{pmatrix}9 & 2 \\ 8 & 3\end{pmatrix}$ です。

$1$ 番目のクエリ $(2, Y^{(1)}, 2, 3)$ を処理すると $X^{(2)}$ に $Y^{(1)}$ が代入され、
$X^{(1)} = \begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix}, \ X^{(2)} = \begin{pmatrix}3 & 1 \\ -18 & 5\end{pmatrix}, \ X^{(3)} = \begin{pmatrix}2 & 4 \\ 1 & 3\end{pmatrix}$
となります。
$X^{(2)} X^{(3)} = \begin{pmatrix}3 & 1 \\ -18 & 5\end{pmatrix} \begin{pmatrix}2 & 4 \\ 1 & 3\end{pmatrix} = \begin{pmatrix}7 & 15 \\ -31 & -57\end{pmatrix}$ なので、$1$ 番目のクエリを処理した際の「クエリの結果」は $7, 15, 69, 43$ です。
したがって、まず

7 15
69 43
が出力されます。

次に、$2$ 番目のクエリ $(1, Y^{(2)}, 1, 2)$ を処理すると $X^{(1)}$ に $Y^{(2)}$ が代入され、
$X^{(1)} = \begin{pmatrix}9 & 2 \\ 8 & 3\end{pmatrix}, \ X^{(2)} = \begin{pmatrix}3 & 1 \\ -18 & 5\end{pmatrix}, \ X^{(3)} = \begin{pmatrix}2 & 4 \\ 1 & 3\end{pmatrix}$
となります。
$X^{(1)} X^{(2)} = \begin{pmatrix}9 & 2 \\ 8 & 3\end{pmatrix} \begin{pmatrix}3 & 1 \\ -18 & 5\end{pmatrix} = \begin{pmatrix}-9 & 19 \\ -30 & 23\end{pmatrix}$ なので、$2$ 番目までのクエリを順に処理した際の「クエリの結果」は $91, 19, 70, 23$ です。
したがって、次に
91 19
70 23
が出力されます。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。