atcoder#ARC098B. [ABC098D] Xor Sum 2

[ABC098D] Xor Sum 2

配点 : 500500

問題文

長さ NN の整数列 AA があります。

次の条件を満たす整数 ll, rr ( 1lrN1 \leq l \leq r \leq N ) の組の個数を求めてください。

  • $A_l\ xor\ A_{l+1}\ xor\ ...\ xor\ A_r = A_l\ +\ A_{l+1}\ +\ ...\ +\ A_r$
xorの説明

整数 c1,c2,...,cmc_1, c_2, ..., c_mxorxor は以下のように定義されます。

  • xorxor の値を XX とおく。XX22 進数表記したときの 2k2^k ( 0k0 \leq k, kk は整数 ) の位の値は、c1,c2,...cmc_1, c_2, ...c_m のうち、22 進数表記したときの 2k2^k の位の値が 11 となるものが奇数個ならば 11、偶数個ならば 00 となる。

例えば、3355xorxor の値は、3322 進数表記が 0110115522 進数表記が 101101 のため、22 進数表記が 11011066 となります。

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 0Ai<2200 \leq A_i < 2^{20}
  • 入力はすべて整数である

入力

入力は以下の形式で標準入力から与えられる。

NN

A1A_1 A2A_2 ...... ANA_N

出力

条件を満たす整数 ll, rr ( 1lrN1 \leq l \leq r \leq N ) の組の個数を出力せよ。

4
2 5 4 6
5

明らかに、(l,r)=(1,1),(2,2),(3,3),(4,4)(l,r)=(1,1),(2,2),(3,3),(4,4) は条件を満たします。 また、(l,r)=(1,2)(l,r)=(1,2) の場合、A1 xor A2=A1 + A2=7A_1\ xor\ A_2 = A_1\ +\ A_2 = 7 となるので、これも条件を満たします。 ほかに条件を満たす組はないので、答えは 55 になります。

9
0 0 0 0 0 0 0 0 0
45
19
885 8 1 128 83 32 256 206 639 16 4 128 689 32 8 64 885 969 1
37