Xum

Time limit: 0.05s Memory limit: 64MB Input: xum.in Output: xum.out

A fost odată o zână magică pe nume Ursul Brumi. Într-o zi, zâna a decis să se plimbe prin pădure, când, parcă de niciunde, o babă (@lavgiorgionicusor12 pe tik tok) a început să țipe la ea:

Am crezut că ai pățit ceva zânule. Ursul Brumi, am venit să te mănânc!

Odată ce a auzit acestea, Ursul Brumi a realizat că trebuie să se dezintegreze în mai multe bucăți pentru a deveni invizibil în fața babei. Astfel, el a scăpat de primejdie, iar, la final, s-a integrat înapoi într-o bucată, devenind, din nou, o zână de nota 1010.

Cerință

Se dă un vector vv de NN numere. Definim xum(ij)=vivi+1vjxum(i \ldots j) = v_{i} \oplus v_{i+1} \oplus \ldots \oplus v_{j}, unde 1ijN1 \leq i \leq j \leq N, iar cu \oplus am notat operatorul pe biți xor1xor^1.
Calculați S=1ijnxum(ij)S = \sum_{1 \leq i \leq j \leq n} xum(i \ldots j).

Date de intrare

Pe prima linie a fișierului xum.in se va afla NN, numărul de elemente ale lui vv. Pe următoarea linie, vor fi înșirate cele NN elemente ale lui vv.

Date de ieșire

Afișați în fișierul xum.out rezultatul cerut.

Restricții și precizări

  • 1N1051 \leq N \leq 10^5;
  • VMAX103VMAX \leq 10^3;
  • 1viVMAX1 \leq v_{i} \leq VMAX;
  • 20%20\% din teste au N103N \leq 10^3;
  • 1^1Despre operatorul "xor" puteți citi mai multe în acest articol foarte fin.

Exemplu

xum.in

3
1 2 3

xum.out

10

Explicație

1+2+3+(12)+(23)+(123)=101 + 2 + 3 + (1 \oplus 2) + (2 \oplus 3) + (1 \oplus 2 \oplus 3) = 10

Log in or sign up to be able to send submissions!