CF1438E Yurii Can Do Everything
题目描述
Yurii 相信自己无所不能。那么,他能解决这个问题吗?
他有一个由 $n$ 个正整数组成的数组 $a$。我们称子数组 $a[l...r]$ 是“好”的,当且仅当同时满足以下条件:
- $l+1 \leq r-1$,即子数组的长度至少为 $3$;
- $a_l \oplus a_r = a_{l+1} + a_{l+2} + \ldots + a_{r-2} + a_{r-1}$,其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
换句话说,如果子数组两端元素的按位异或等于中间所有元素的和,则该子数组是“好”的。
Yurii 想知道“好”子数组的总数是多少。请你计算并输出。
数组 $c$ 是数组 $d$ 的子数组,如果 $c$ 可以通过从 $d$ 的开头和结尾各删除若干(可能为零或全部)元素得到。
输入格式
第一行包含一个整数 $n$($3 \leq n \leq 2 \cdot 10^5$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i < 2^{30}$),表示数组 $a$ 的元素。
输出格式
输出一个整数,表示“好”子数组的数量。
说明/提示
在示例中共有 $6$ 个“好”子数组:
- $[3,1,2]$(出现两次),因为 $3 \oplus 2 = 1$;
- $[1,2,3]$(出现两次),因为 $1 \oplus 3 = 2$;
- $[2,3,1]$,因为 $2 \oplus 1 = 3$;
- $[3,1,2,3,1,2,3,15]$,因为 $3 \oplus 15 = 1+2+3+1+2+3$。
由 ChatGPT 4.1 翻译