配点 : 300 点
問題文
長さ N の数列 A が与えられます。
この数列を、1 つ以上の空でない連続した区間に分けます。
その後、分けた各区間で、区間内の数のビット単位 OR を計算します。
こうして得られた全ての値のビット単位 XOR として考えられる最小値を求めてください。
ビット単位 $\mathrm{OR}$ 演算とは
整数 A,B のビット単位 OR、A OR B は以下のように定義されます。
- A OR B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうち少なくとも片方が 1 であれば 1、そうでなければ 0 である。
例えば、3 OR 5=7 となります (二進表記すると: 011 OR 101=111)。
一般に k 個の整数 p1,p2,p3,…,pk のビット単位 OR は $(\dots ((p_1\ \mathrm{OR}\ p_2)\ \mathrm{OR}\ p_3)\ \mathrm{OR}\ \dots\ \mathrm{OR}\ p_k)$ と定義され、これは p1,p2,p3,…pk の順番によらないことが証明できます。
ビット単位 $\mathrm{XOR}$ 演算とは
整数 A,B のビット単位 XOR 、A XOR B は、以下のように定義されます。
- A XOR B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3 XOR 5=6 となります (二進表記すると: 011 XOR 101=110)。
一般に k 個以上の整数 p1,p2,p3,…,pk のビット単位 XOR は $(\dots ((p_1\ \mathrm{XOR}\ p_2)\ \mathrm{XOR}\ p_3)\ \mathrm{XOR}\ \dots\ \mathrm{XOR}\ p_k)$ と定義され、これは p1,p2,p3,…pk の順番によらないことが証明できます。
制約
- 1≤N≤20
- 0≤Ai<230
- 入力に含まれる値は全て整数である
入力
入力は以下の形式で標準入力から与えられる。
N
A1 A2 A3 … AN
出力
答えを出力せよ。
3
1 5 7
2
[1,5,7] を [1,5] と [7] の 2 つの区間に分けると、それぞれの区間内の数のビット単位 OR は 5,7 となり、その XOR は 2 です。
これより小さくすることはできないので、2 を出力します。
3
10 10 10
0
[10] と [10,10] に分けるとよいです。
4
1 3 3 1
0
[1,3] と [3,1] に分けるとよいです。