N - Set Seed Speedrun
問題文
$T$ 個のテストケースについて、以下の問題を解いてください。
$M$ 行 $M$ 列のグリッドがあり、上から $i+1$ 行目、左から $j+1$ 行目のマスを $(i, j)$ と表します。
高橋くんは次のようなゲームをプレイしています。
- まずシード値 $s (0 \leq s < M)$ を決める。$(\mathrm{RNG}_s(N), \mathrm{RNG}_s(N+1))$ を高橋くんの最初の座標としてゲームを開始する。
- その後、ゲームをクリアするまで好きなだけ次の行動ができる。
- 高橋くんのいる座標が $(X, Y)$ のとき、ゲームをクリアする。
- 隣接するマスに単位時間かけて移動する。ただし、グリッドの外には移動できない。
- マス $(i, j)$ は次の $8$ つのマスに(存在する場合)隣接する。
- $(i-1, j-1)$
- $(i-1, j)$
- $(i-1, j+1)$
- $(i, j-1)$
- $(i, j+1)$
- $(i+1, j-1)$
- $(i+1, j)$
- $(i+1, j+1)$
- マス $(i, j)$ は次の $8$ つのマスに(存在する場合)隣接する。
ここで、シード値が $s$ である線形合同法の $n$ 番目の出力を $\mathrm{RNG}_s(n)$ と表し、次によって定義します。
$\mathrm{RNG}_s(n) = \left\{
\begin{array}{ll}
s & (n = 1) \\
A \cdot \mathrm{RNG}_s(n-1) + B \pmod M & (n \geq 2)
\end{array}
\right.$
高橋くんはゲームが上手いので、最初に選んだシード値を $s$ として、ゲームを開始してからクリアするまでにかかる時間 $D_s$ を最小化するよう最適に行動します。
$s$ として考えられる値は $M$ 通りあります。$(D_s, s)$ を辞書順で昇順に並べたときの $K$ 番目の値の組を求めてください。
なお、$(a,b)$ が $(c,d)$ よりも辞書順で小さいとは、以下のいずれかが成り立つことをいいます。
- $a<c$
- $a=c$ かつ $b<d$
制約
- $1 \leq T \leq 100$
- $1 \leq N \leq 10^{18}$
- $2 \leq M \leq 10^{9}$
- $0 \leq X,Y < M$
- $M$ は素数
- $1 \leq K \leq M$
- $1 \leq A < M$
- $0 \leq B < M$
- 入力はすべて整数である。
部分点
この問題には、部分点が設定されている。部分点の採点方法については、コンテストトップ を参照すること。
- ($50$ 点)
- $2 \leq M \leq 10^{4}, 1 \leq N \leq 10^{4}$
- ($100$ 点)
- $2 \leq M \leq 10^{4}$
- ($350$ 点)
- $K = 1$
- ($500$ 点)
- 追加の制約はない。
入力
入力は以下の形式で標準入力から与えられる。
$T$
$\mathrm{case}_1$
$\mathrm{case}_2$
$\vdots$
$\mathrm{case}_T$
$A$ $B$ $M$
$X$ $Y$
$K$ $N$
出力
$T$ 行出力せよ。$i$ 行目には $i$ 番目のテストケースの答えとなる値の組を空白区切りで出力せよ。
1
3 1 5
2 2
3 1
2 1
シード値が $0, 1, 2, 3, 4$ のとき、ゲームを開始する座標はそれぞれ $(0, 1), (1, 4), (2, 2), (3, 0), (4, 3)$ となります。$(D_s, s)$ を辞書順で昇順に並べると $(0, 2), (2, 0), (2, 1), (2, 3), (2, 4)$ となるため、$3$ 番目の値は $(2, 1)$ です。
この入力は部分点 $1,2$ の制約を満たします。
2
39 30 47
9 7
1 43
2137 2593 4421
2128 2510
1 6987
2 43
27 1194
この入力は部分点 $1,2,3$ の制約を満たします。
2
39 30 47
9 7
31 43
2137 2593 4421
2128 2510
3141 6987
29 10
1863 2989
この入力は部分点 $1,2$ の制約を満たします。
1
1 0 998244353
0 0
31415 1
31414 31414