题目描述
本题中,我们用 ⊕ 表示 按位异或 符号。
给定一个长度为 n 的数列 a1,a2,…,an,如果一对下标对 (i,j) 同时满足如下两个条件,则我们称下标对 (i,j) 为一对”快乐下标对”。
- i<j 且 j−i+1 是偶数;
- 令 mid=2l+r−1,则 al⊕al+1⊕…⊕amid=amid+1⊕amid+2⊕…⊕ar
换句话说,如果数列 a 中存在一段长度为偶数的连续子序列,这个连续子序列以 ai 开头,以 aj 结尾,且该连续子序列中前一半元素的异或和等于后一半元素的异或和,则我们称下标对 (i,j) 为一对快乐下标对。
求:数列 a 中存在多少对快乐下标对?
输入格式
第一行,一个整数 n(2≤n≤3⋅105),表示数列长度。
第二行,n 个整数 a1,a2,…,an(0≤ai<220),两两之间以一个空格分隔。
输出格式
输出一个整数,表示数列 a 中存在的快乐下标对数量。
5
1 2 3 4 5
1
6
3 2 2 3 7 6
3
说明/提示
样例解释
样例1:存在 1 对快乐下标对:(2,5),因为 2⊕3=4⊕5=1
样例2:存在 3 对快乐下标对:(2,3),(1,4) 和 (3,6)
数据规模与约定
- 对于 30% 的数据,n≤30;ai<25
- 对于 60% 的数据,n≤3000;ai<210
- 对于 100% 的数据,2≤n≤3⋅105;0≤ai<220