만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연속 부분 수열 XOR

시간 제한1초메모리 제한512 MB

요약
주어진 수열에서 비트 XOR 값이 K보다 작은 연속 부분수열의 개수를 센다.
난이도

보통10점 중 7점

유형
비트 연산, 트라이, 누적 합
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. XOR 값이 KK보다 작은 연속 부분 수열이 몇 개인지 구하시오.

연속 부분 수열은 i≤ji \le j인 두 인덱스에 대해 Ai,Ai+1,…,AjA_i, A_{i+1}, \dots, A_j를 말한다. 이 부분 수열의 XOR은 Ai⊕Ai+1⊕⋯⊕AjA_i \oplus A_{i+1} \oplus \dots \oplus A_j이고, ⊕\oplus는 비트 단위 배타적 논리합이다.

시작 위치나 끝 위치가 다르면 원소의 값이 같아도 서로 다른 부분 수열로 센다.

입력

첫째 줄에 NN과 KK가 공백으로 구분되어 주어진다. (1≤N≤100,0001 \le N \le 100{,}000, 1≤K≤1,000,0001 \le K \le 1{,}000{,}000)

둘째 줄에 A1,A2,…,ANA_1, A_2, \dots, A_N이 순서대로 공백으로 구분되어 주어진다. (1≤Ai≤100,0001 \le A_i \le 100{,}000)

출력

XOR 값이 KK보다 작은 연속 부분 수열의 개수를 첫째 줄에 출력한다.

예제3

  1. 예제 1

    입력
    5 2
    4 1 3 2 7
    
    예상 출력
    3
    
  2. 예제 2

    입력
    1 1
    1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1 2
    1
    
    예상 출력
    1