#6990. 子段异或

子段异或

题目描述

给定一个长度为 nn 的数列 a1,a2,,ana_1,a_2,\cdots,a_n,计算这个序列所有连续子序列的和的异或值,也就是计算

$$\bigoplus_{1\leq i\leq j\leq n} \{ a_i+a_{i+1}+\cdots+a_{j-1}+a_{j} \} $$

其中 \oplus 表示异或运算。例如对于数列 20,10,3520,10,35,有六个子序列,它们的和分别是:20201010353520+1020+1010+3510+3520+10+3520+10+35,它们的异或和为 7979

输入格式

第一行:单个整数 nn; 第二行:nn个整数表示 a1,a2,,ana_1,a_2,\cdots,a_n

输出格式

单个整数:所有连续子序列的和的异或值。

3
20 10 35
79

数据范围

  • 0ai0\leq a_i
  • a1+a2++an1,000,000a_1+a_2+\cdots+a_n\leq 1,000,000
  • 对于 30%30\% 的数据,1n1031\leq n \leq 10^3
  • 对于 60%60\% 的数据,1n1041\leq n \leq 10^4
  • 对于 100%100\% 的数据,1n1051\leq n \leq 10^5