hyper fibonacci sequence

2 secs 1024 MB
naskya's icon naskya

問題

以下の初期値及び漸化式で定まる数列 (An)n1(A_n)_{n \geq 1} の第 kk 項 (=Ak= A_k) を MM で割った余りを求めてください。

{A1=aA2=bAn=(An2)m+(An1)m(forn3)\left\{\begin{array}{l} A_1 = a \\ A_2 = b \\ A_n = (A_{n - 2})^m + (A_{n - 1})^m \hspace{0.5em} (\mathrm{for} \hspace{0.4em} n \geq 3) \end{array}\right.

制約

  • 2M5002 \leq M \leq 500
  • 0a<M0 \leq a < M
  • 0b<M0 \leq b < M
  • 1m1091 \leq m \leq 10^9
  • 1k1091 \leq k \leq 10^9
  • 入力は全て整数

入力

入力は標準入力から以下の形式で与えられます。

MabmkM \hspace{0.3em} a \hspace{0.5em} b \hspace{0.5em} m \hspace{0.5em} k

出力

数列の第 kk 項を MM で割った余り(00 以上 MM 未満の整数となります)を標準出力に出力してください。

入出力例

例 1

入力
500 1 1 1 7
出力
13

数列は 1,1,2,3,5,8,13,1, \, 1, \, 2, \, 3, \, 5, \, 8, \, 13, \dots と続きます。

例 2

入力
2 1 1 10 100000
出力
1

MM で割った余りを出力してください。

Submit


Go (1.21)