题目背景
⊕ 代表异或(xor)运算,运算规则为:
- 当只有一位比特参与运算时,0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0(相同为0,相异为1);
- 当有多位比特参与运算时,对每位比特分别取异或运算,如 0101⊕1011=1110;
题目描述
给定一个长度为 n的序列a1,a2,…,an,求这个序列有多少个区间 l≤r 满足以下条件:
$$a_l + a_{l+1} + \dots +a_{r-1} +a_r =a_l \oplus a_{l+1} \oplus \dots \oplus a_{r-1} \oplus a_r
$$
输入格式
- 第一行:单个整数表示 n
- 第二行:n 个整数表示 a1,a2,…,an
输出格式
4
1 2 4 2
8
数据范围
- 30% 的数据,1≤n≤100
- 60% 的数据,1≤n≤2000
- 100% 的数据,1≤n≤300,000,0≤ai<230