#PD022B. 回响(echo)
回响(echo)
回响(echo)
- 输入:
echo.in - 输出:
echo.out - 时间限制:
2 s - 内存限制:
256 MB
题目描述
一首乐曲结束后,最后一个音符的回响仍未消散。小 R 正在为音游设计一种回放特效:不同片段会产生不同的回响,而片段越长,回响也会被进一步放大。
一首乐曲被划分为连续的 个节拍,第 个节拍有一个非负整数特征值 。
选择两个整数 ,满足 ,就能得到由第 个至第 个节拍组成的连续片段。该片段的特征值定义为其中所有节拍特征值的按位异或结果:
片段的回响值定义为其特征值乘以片段长度,即:
$(a_l \oplus a_{l+1} \oplus \cdots \oplus a_r) \times (r-l+1).$
请计算所有连续片段的回响值之和,并输出它对 取模后的结果。两个片段只要左端点或右端点不同,就视为不同片段。
其中, 表示按位异或:将两个数写成二进制,在每一位上,两个数字不同时结果为 ,相同时结果为 。例如 。在 C++ 中可使用运算符 ^ 进行按位异或运算。
输入格式
从文件 echo.in 中读入数据。
第一行包含一个正整数 ,表示乐曲的节拍数量。
第二行包含 个非负整数 ,依次表示每个节拍的特征值。
输出格式
输出到文件 echo.out 中。
输出一行一个整数,表示所有连续片段的回响值之和对 取模后的结果。
3
1 3 2
12
样例1解释
共有六个连续片段:
| 片段 | 片段特征值 | 片段长度 | 回响值 |
|---|---|---|---|
因此答案为 。
4
1 0 1 1
11
数据范围
对于所有数据,,。每个测试点 分。
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 1—4 | 无 | |
| 5—9 | ||
| 10—13 | A | |
| 14—20 | 无 |
特殊性质 A:对于所有 ,均有 。
相关
在下列比赛中: