P7003 [NEERC 2013] Hack Protection

题目描述

Pavel 正在给他的朋友 Egor 发送一些非负整数数组。他希望确保在他的朋友收到数组之前,没有人篡改过它。为了解决这个问题,Pavel 需要为他的数组计算某种校验和或摘要。Pavel 有一个创新的头脑,所以他发明了以下算法来计算他的数组的摘要:计算子数组中数字的按位异或等于相同数字的按位与的子数组的数量。 例如,考虑一个由四个二进制数 `01`、`10`、`11` 和 `11` 组成的数组。左下表列出了该数组每个子数组的数字的按位异或结果,右下表列出了该数组每个子数组的数字的按位与结果。表格的行对应于子数组的起始元素,从数组的第 $1$ 个元素到第 $4$ 个元素,而列对应于子数组的结束元素。匹配的值用灰色背景突出显示。 ![](https://cdn.luogu.com.cn/upload/image_hosting/9rnw871w.png) 你的任务是帮助 Pavel 计算给定数组的这种摘要。

输入格式

第一行包含一个整数 $n (1 \le n \le 100 000)$。第二行包含 $n$ 个以十进制表示的非负整数 $a_{i} (0 \le a_{i} \le 2^{31}-1)$。

输出格式

输出的第一行打印给定数组的 Pavel 的摘要。

说明/提示

时间限制:1 秒,内存限制:128 MB。 题面翻译由 ChatGPT-4o 提供。