luogu#P11434. [Code+#8 决赛] 异或表

[Code+#8 决赛] 异或表

题目背景

搬运自 Code+ #8 决赛

题目描述

小 o 家里的墙上贴着一张巨大的异或表。顾名思义,假如我们从左到右、从下到上依次将这张表格的行和列从 00 开始编号,那么第 ii 行第 jj 列的方格里写的数是 i xor ji\ \text{xor}\ j

闲暇时刻,小 o 时常盯着表格发呆。这天,小 o 得到了一个序列。正当他绞尽脑汁思考如何玩转这个序列之时,一个绝妙的想法从脑海中闪过:为何不看看这个序列有多少个子段会在眼前的这张表格里作为连续的一段出现呢?

形式化地讲,如果这个序列的一个连续子段可以与表格中以某一个位置开始向右的连续一段或者向上的连续一段完全重合,则称这个子段在异或表中出现过。

当小 o 兴致勃勃地开始从表中搜寻想要的序列时,他发现这张表格不断延伸、无穷无尽,以至于完全无法判断一个序列是否存在于表格中。于是,他只好前来求助,希望掌握人类智慧的你能告诉他答案。

输入格式

输入第一行包含一个正整数 nn

第二行包含 nn 个非负整数 a1,a2,,ana_1,a_2,…,a_n

输出格式

输出一个非负整数表示答案。

6
2 3 0 4 7 5
10
16
1 0 3 2 5 4 7 6 2 3 0 1 6 7 4 5
72

提示

【样例解释】

所有由单点构成的子段都满足要求。

长度为 22 的满足要求的子段有:$[2,3]\ (x=2,y=0),\ [3,0]\ (x=2,y=1),\ [4,7]\ (x=5,y=1)$。

长度为 33 的满足要求的子段有:[2,3,0] (x=2,y=0)[2,3,0]\ (x=2,y=0)

6+3+1=106+3+1=10 个。

【数据范围】

对于全部数据,满足 1n105,0ai<2601\le n\le 10^5,0\le a_i\lt 2^{60}