筑波大学プログラミングコンテスト2023
コンテスト日時
2023/09/03 (Su) 14:00 - 17:00

G - Pseudo Fibonacci

Flavor
2
s
1024
MB
600

問題文

長さ $N$ の整数列 $A, B$ が与えられます。次の操作①, ②を任意の順番で任意の回数行って $A$ を $B$ に一致させるために必要な操作回数の最小値を求めてください。

操作①: $1 \leq i \leq N$ を選び、$A_i$ の値を任意の整数 $x$ に置き換える。
操作②: $3 \leq i \leq N$ を選び、$A$ の $i$ 番目以降の要素 $(A_i, \ldots , A_N)$ を三項間漸化式 $A_j \equiv p \times A_{j-1} + q \times A_{j-2} \pmod N$ $(i \leq j \leq N)$ を満たすように置き換える。より厳密には、$j = i, \dots, N$ について、この順に $A_j ← (p \times A_{j-1} + q \times A_{j-2}) \bmod N$ を行う。

制約

  • 入力は全て整数
  • $3 \leq N \leq 80$
  • $0 \leq p, q \leq N-1$
  • $0 \leq A_i, B_i \leq N-1$ $(1 \leq i \leq N)$

部分点

この問題には、部分点が設定されている。満点は $600$ 点である。

  • $3 \leq N \leq 40$ を満たすデータセットに正解した場合は、$400$ 点が与えられる
  • 追加の制約の無い全てのデータセットに正解した場合は、上記に加えて $200$ 点が与えられ、$600$ 点(満点)となる

入力

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

$N$
$p$ $q$
$A_1$ $A_2$ $\cdots$ $A_N$
$B_1$ $B_2$ $\cdots$ $B_N$

出力

答えを出力せよ。

入力例 1
6 1 1 0 1 2 3 4 5 0 1 1 2 3 5
出力例 1
1
入力例 2
3 2 1 2 1 0 2 1 0
出力例 2
0
入力例 3
6 0 0 5 0 5 2 5 1 5 4 2 5 3 0
出力例 3
5
入力例 4
8 6 2 3 1 4 1 6 0 1 7 4 5 2 0 4 0 0 7
出力例 4
5
提出
C++23 (g++ 12.2.0)