만드는 중입니다

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

XOR 합

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

요약
n개의 k비트 수가 주어질 때, 모든 쌍의 XOR 값을 x제곱한 합을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 수학, 조합론
정답자
아직 제출이 없습니다

문제

kk비트 정수 nn개로 이루어진 배열 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다.

∑i=1n∑j=i+1n(ai⊕aj)x\sum_{i=1}^{n} \sum_{j=i+1}^{n} (a_i \oplus a_j)^x를 계산한다.

a⊕ba \oplus b는 aa와 bb의 비트 단위 배타적 논리합(XOR)이다.

답이 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫 줄에 세 정수 nn, kk, xx가 주어진다 (1≤n,k,n⋅k≤300 0001 \leq n, k, n \cdot k \leq 300\,000, 1≤x≤31 \leq x \leq 3). 각각 배열의 길이, 각 수의 비트 수, XOR 결과에 씌우는 거듭제곱 지수이다.

다음 nn개의 줄에는 '0'과 '1'로만 이루어진 문자열 s0,s1,…,sk−1s_0, s_1, \ldots, s_{k-1}이 한 줄에 하나씩 주어진다. ii번째 문자열은 ai=∑i=0k−1si⋅2ia_i = \sum_{i=0}^{k-1} s_i \cdot 2^i를 나타낸다.

출력

모든 쌍에 대해 XOR 결과의 xx제곱을 구하고, 그 합을 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 샘플에서 배열은 [5,4,4][5, 4, 4]이고, 답은 (5⊕4)+(5⊕4)+(4⊕4)=1+1+0=2(5 \oplus 4) + (5 \oplus 4) + (4 \oplus 4) = 1 + 1 + 0 = 2이다.

두 번째 샘플에서 배열은 [61,38][61, 38]이고, 답은 (61⊕38)3=273=19683(61 \oplus 38)^3 = 27^3 = 19683이다.

예제2

  1. 예제 1

    입력
    3 3 1
    101
    001
    001
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2 6 3
    101111
    011001
    
    예상 출력
    19683