만드는 중입니다

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

부분 배열의 & 값 개수

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

요약
주어진 배열의 부분수열에 대해 비트 AND를 취할 때 나올 수 있는 서로 다른 값의 개수를 구한다. 크기가 0인 부분수열의 AND는 0이다.
난이도

보통10점 중 7점

유형
비트 연산, 동적 계획법, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

NN개의 정수로 이루어진 배열 AA가 주어진다.

AA의 부분 배열마다 그 원소를 모두 바이너리 &한 값을 구한다. 이렇게 모은 값 중에 서로 다른 수가 몇 개인지 세는 프로그램을 작성하시오.

부분 배열은 AA의 일부분을 뜻하며, 원소가 연속되어 있을 필요는 없다. 크기가 0인 부분 배열을 &한 값은 0이다.

입력

첫째 줄에 NN이 주어진다. (1≤N≤1000001 \le N \le 100000)

둘째 줄에 배열 AA의 원소가 공백으로 구분되어 주어진다. 각 원소는 10610^6보다 작거나 같은 음이 아닌 정수이다.

출력

첫째 줄에 &한 결과로 나올 수 있는 서로 다른 수의 개수를 출력한다.

예제2

  1. 예제 1

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

    입력
    4
    23 54 39 23
    
    예상 출력
    8