AT_abc009_4 [ABC009D] 漸化式
Description
[problemUrl]: https://atcoder.jp/contests/abc009/tasks/abc009_4
数列 $ A $ はすべての要素が $ 32 $ ビットの符号なし整数で表現でき、その値は次のようにして決まる。
- はじめの $ K $ 項 $ A_1,\,A_2,\,...,\,A_K $ は入力で与えられる。
- $ A $ とは別に $ K $ 項の数列 $ C_1,\,C_2,\,...,\,C_K $ (こちらもすべての要素が $ 32 $ ビットの符号なし整数におさまる)が入力で与えられ、$ K+1 $ 項目以降の $ A $ の値はこの $ C $ を用いて次のように計算される。
- $ N\ ≧\ 1 $ に対し $ A_{N+K}\ =\ (C_1\, $AND$ \,A_{N+K-1})\, $XOR$ \,(C_2\, $AND$ \,A_{N+K-2})\, $XOR$ \,...\, $ XOR$ \,(C_K\, $AND$ \,A_N) $
- ただし AND はビットごとの論理積、 XOR はビットごとの排他的論理和を表す。
この数列 $ A $ の $ M $ 番目の値 $ A_M $ を求めるプログラムを作成せよ。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ K $ $ M $ $ A_1 $ $ A_2 $ $ ... $ $ A_K $ $ C_1 $ $ C_2 $ $ ... $ $ C_K $
- $ 1 $ 行目には、はじめに決まっている項の数を表す整数 $ K $ ($ 1\ ≦\ K\ ≦\ 100 $) および数列の求める項の番号を表す整数 $ M $ ($ 1\ ≦\ M\ ≦\ 10^9 $) が与えられる。
- $ 2 $ 行目には、数列 $ A $ の最初の $ K $ 項が順に与えられる。$ A $ の値はすべて $ 32 $ ビット符号なし整数におさまる。
- $ 3 $ 行目には、数列 $ A $ の $ K+1 $ 項目以降を計算するときに使う数列 $ C $ の要素が順に与えられる。$ C $ の値はすべて $ 32 $ ビット符号なし整数におさまる。
Output Format
$ A_M $ の値を $ 1 $ 行に出力せよ。
出力の末尾にも改行をいれること。
Explanation/Hint
### Sample Explanation 1
実際に $ A $ の値を計算していくと次のようになる。 - $ A_4\ =\ (7\, $AND$ \,30)\, $XOR$ \,(19\, $AND$ \,20)\, $XOR$ \,(13\, $AND$ \,10)\ =\ 30 $ - $ A_5\ =\ (7\, $AND$ \,30)\, $XOR$ \,(19\, $AND$ \,30)\, $XOR$ \,(13\, $AND$ \,20)\ =\ 16 $