trang chủ / bài tập / 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 1lrn 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

  • 1n3·105
  • 1ai1018

Ví dụ

Input Output Giải thích
3
6 7 14
2 Hai cặp hợp lệ là (2,3)(1,3). Với (2,3): biến 7111411, khi đó 1111=0. Với (1,3): biến 63, 713, giữ nguyên 14, khi đó 31314=0.
4
1 2 1 16
4 Bốn cặp hợp lệ là (1,2), (2,3), (3,4)(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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0