AND, OR, XOR 2

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

요약
모든 연속 부분 수열의 bitwise AND, OR, XOR 값을 각각 모두 더해 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
비트 연산, 분할 정복, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

음이 아닌 정수로 이루어진 길이 NN의 수열 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 주어진다.

∧,∨,⊕\land, \lor, \oplus를 각각 Bitwise AND, OR, XOR 연산자로 정의하자. 다음 세 값을 998,244,353998\\,244\\,353으로 나눈 나머지를 각각 구하여라. 998,244,353998\\,244\\,353은 소수이다.

\[\sum_{i=1}^{N} \sum_{j=i}^{N} \left(A_i \land A_{i+1} \land \cdots \land A_j\right), \qquad \sum_{i=1}^{N} \sum_{j=i}^{N} \left(A_i \lor A_{i+1} \lor \cdots \lor A_j\right), \qquad \sum_{i=1}^{N} \sum_{j=i}^{N} \left(A_i \oplus A_{i+1} \oplus \cdots \oplus A_j\right)\]

입력

첫 번째 줄에 수열 AA의 길이 NN이 주어진다. (1≤N≤200,000)(1 \le N \le 200\\, 000)

두 번째 줄에는 수열의 원소를 의미하는 NN개의 정수 A_1,⋯ ,A_NA\_1, \cdots, A\_N이 공백으로 구분되어 주어진다. (0≤A_i<230)(0 \le A\_i < 2^{30})

출력

첫 번째 줄에 각 경우에 대한 답을 AND, OR, XOR 순으로 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 2 3
    
    예상 출력
    8 15 10