Time limit: 1 second
Memory limit: 256 megabytes
题目描述
定义序列 A 的价值为 f(A)=i=1∑∣A∣Ai,即 A 中所有元素之和,其中 ∣A∣ 表示序列 A 的长度。
Kirito 得到了一个长度为 n−1 的序列 b,现在他知道序列 b 是由一个长度为 n 的初始序列 a 通过以下操作得到的:
对于所有 i=1,2,…,n−1,均有 bi=ai⊕ai+1 成立,其中 ⊕ 表示 按位异或运算。
现在 Kirito 想知道构成序列 b 的所有初始序列 a 中 价值最小 的序列的价值是多少。
按位异或运算:将两个整数作为二进制数,对二进制表示中的每一位逐一运算。其中 0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0。
例:5⊕6=(101)2⊕(110)2=(011)2=3。
输入
第一行一个正整数 n,意义如题面描述。
第二行包含 n−1 个由空格分隔的整数 b1,b2,…,bn−1,为数组 b 的元素。
输出
输出一个整数,为构成序列 b 的所有初始序列 a 中 价值最小 的序列的价值。
限制
1≤n≤2⋅105
0≤bi≤109
样例解释
一种可能的初始序列 a={0,1,3,0,4},其中 f(a)=8。