100 atcoder#ABC197C. [ABC197C] ORXOR

[ABC197C] ORXOR

配点 : 300300

問題文

長さ NN の数列 AA が与えられます。 この数列を、11 つ以上の空でない連続した区間に分けます。 その後、分けた各区間で、区間内の数のビット単位 OR\mathrm{OR} を計算します。 こうして得られた全ての値のビット単位 XOR\mathrm{XOR} として考えられる最小値を求めてください。

ビット単位 $\mathrm{OR}$ 演算とは

整数 A,BA, B のビット単位 OR\mathrm{OR}A OR BA\ \mathrm{OR}\ B は以下のように定義されます。

  • A OR BA\ \mathrm{OR}\ B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち少なくとも片方が 11 であれば 11、そうでなければ 00 である。

例えば、3 OR 5=73\ \mathrm{OR}\ 5 = 7 となります (二進表記すると: 011 OR 101=111011\ \mathrm{OR}\ 101 = 111)。
一般に kk 個の整数 p1,p2,p3,,pkp_1, p_2, p_3, \dots, p_k のビット単位 OR\mathrm{OR} は $(\dots ((p_1\ \mathrm{OR}\ p_2)\ \mathrm{OR}\ p_3)\ \mathrm{OR}\ \dots\ \mathrm{OR}\ p_k)$ と定義され、これは p1,p2,p3,pkp_1, p_2, p_3, \dots p_k の順番によらないことが証明できます。

ビット単位 $\mathrm{XOR}$ 演算とは

整数 A,BA, B のビット単位 XOR\mathrm{XOR}A XOR BA\ \mathrm{XOR}\ B は、以下のように定義されます。

  • A XOR BA\ \mathrm{XOR}\ B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3 XOR 5=63\ \mathrm{XOR}\ 5 = 6 となります (二進表記すると: 011 XOR 101=110011\ \mathrm{XOR}\ 101 = 110)。
一般に kk 個以上の整数 p1,p2,p3,,pkp_1, p_2, p_3, \dots, p_k のビット単位 XOR\mathrm{XOR} は $(\dots ((p_1\ \mathrm{XOR}\ p_2)\ \mathrm{XOR}\ p_3)\ \mathrm{XOR}\ \dots\ \mathrm{XOR}\ p_k)$ と定義され、これは p1,p2,p3,pkp_1, p_2, p_3, \dots p_k の順番によらないことが証明できます。

制約

  • 1N201 \le N \le 20
  • 0Ai<2300 \le A_i \lt 2^{30}
  • 入力に含まれる値は全て整数である

入力

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

NN

A1A_1 A2A_2 A3A_3 \dots ANA_N

出力

答えを出力せよ。

3
1 5 7
2

[1,5,7][1, 5, 7][1,5][1, 5][7][7]22 つの区間に分けると、それぞれの区間内の数のビット単位 OR\mathrm{OR}5,75, 7 となり、その XOR\mathrm{XOR}22 です。 これより小さくすることはできないので、22 を出力します。

3
10 10 10
0

[10][10][10,10][10, 10] に分けるとよいです。

4
1 3 3 1
0

[1,3][1, 3][3,1][3, 1] に分けるとよいです。