trang chủ / đề bài / goodxorseq

Dãy XOR tốt

Đề bài

Mô tả

Cho dãy n số nguyên dương a1,a2,…,an.

Với mỗi số trong dãy, ta được phép thực hiện thao tác sau tuỳ ý nhiều lần: chọn một số bất kỳ của dãy và đổi chỗ hai bit bất kỳ trong biểu diễn nhị phân của nó (biểu diễn nhị phân được xem như có vô hạn bit 0 ở phía trước). Chẳng hạn, số 6=1102 có thể biến thành 3=112, 12=11002, hay 1026=100000000102.

Một dãy được gọi là tốt nếu bằng các thao tác trên ta có thể làm cho XOR của tất cả các phần tử của nó bằng 0.

Hãy đếm số cặp (l,r) với 1≤l≤r≤n sao cho dãy con liên tiếp al,al+1,…,ar là dãy tốt.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài của dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

Một số nguyên duy nhất là số cặp (l,r) thoả mãn.

Ràng buộc

  • 1≤n≤3·105
  • 1≤ai≤1018

Ví dụ

Input Output Giải thích
3
6 7 14
2 Hai cặp hợp lệ là (2,3) và (1,3). Với (2,3): biến 7→11 và 14→11, khi đó 11⊕11=0. Với (1,3): biến 6→3, 7→13, giữ nguyên 14, khi đó 3⊕13⊕14=0.
4
1 2 1 16
4 Bốn cặp hợp lệ là (1,2), (2,3), (3,4) và (1,4). Mọi phần tử đều có đúng một bit 1 nên chỉ cần số phần tử là chẵn.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0