만드는 중입니다

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

비트셋

시간 제한3초메모리 제한2048 MB

요약
행 s_l부터 s_r까지 각 열의 비트가 모두 같은 열의 수를 구합니다. 각 질의의 l과 r은 이전 답으로 정해집니다.
난이도

보통10점 중 7점

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

문제

크기가 mm인 비트셋에 대해 다음 연산을 정의합니다.

  • c=a and bc = a\,\mathrm{and}\,b: aia_i와 bib_i가 모두 1이면 ci=1c_i=1이고, 그렇지 않으면 ci=0c_i=0입니다.
  • c=a or bc = a\,\mathrm{or}\,b: aia_i와 bib_i 중 하나라도 1이면 ci=1c_i=1이고, 그렇지 않으면 ci=0c_i=0입니다.
  • c=a xor bc = a\,\mathrm{xor}\,b: aia_i와 bib_i 중 정확히 하나만 1이면 ci=1c_i=1이고, 그렇지 않으면 ci=0c_i=0입니다.
  • c=not ac = \mathrm{not}\,a: aia_i가 0이면 ci=1c_i=1이고, 그렇지 않으면 ci=0c_i=0입니다.

비트셋 배열 s1,s2,…,sns_1, s_2, \ldots, s_n이 주어집니다. 다음 형태의 질의 kk개에 답하는 프로그램을 작성하세요.

  1. 정수 ℓ\ell과 rr을 입력받습니다.
  2. 다음 식으로 비트셋 tt를 구합니다. t=(sℓ and sℓ+1 and … and sr) xor (not (sℓ or sℓ+1 or … or sr))t = (s_\ell \,\mathrm{and}\, s_{\ell+1} \,\mathrm{and}\, \ldots \,\mathrm{and}\, s_r) \,\mathrm{xor}\, (\mathrm{not}\, (s_\ell \,\mathrm{or}\, s_{\ell+1} \,\mathrm{or}\, \ldots \,\mathrm{or}\, s_r))
  3. tt에서 1의 개수를 셉니다. 이 값이 질의의 답입니다.

입력

첫 줄에 정수 nn과 mm이 주어집니다 (1≤n,m≤1051 \leq n, m \leq 10^5; n⋅m≤106n \cdot m \leq 10^6). 다음 nn개의 줄은 각각 mm개의 문자 0과 1로 이루어진 비트셋을 나타냅니다.

다음 줄에는 질의 수 kk (1≤k≤2⋅1071 \leq k \leq 2 \cdot 10^7)가 주어집니다. 그다음 줄에는 정수 xx, yy, zz (1≤x,y,z≤1091 \leq x, y, z \leq 10^9)가 주어집니다.

질의는 xx, yy, zz와 이전 질의의 답 q1,q2,…,qk−1q_1, q_2, \ldots, q_{k-1}을 이용해 생성됩니다. 수열 aa와 bb는 다음과 같습니다.

  • a1=1a_1 = 1입니다.
  • b1=nb_1 = n입니다.
  • i>1i > 1일 때, ai=(ai−1⋅x+qi−1⋅y+z) mod n+1a_i = (a_{i-1} \cdot x + q_{i-1} \cdot y + z) \bmod n + 1입니다.
  • i>1i > 1일 때, bi=(bi−1⋅y+qi−1⋅z+x) mod n+1b_i = (b_{i-1} \cdot y + q_{i-1} \cdot z + x) \bmod n + 1입니다.

ii번째 질의에서 ℓ=min⁡(ai,bi)\ell = \min(a_i, b_i), r=max⁡(ai,bi)r = \max(a_i, b_i)입니다.

출력

모든 질의 답의 합을 정수 하나로 출력합니다.

힌트

질의 목록은 다음과 같습니다.

#ℓ\ellrr답
1114411
2334433
3224422
4113333

예제1

  1. 예제 1

    입력
    4 10
    1010110101
    0101111001
    1101101101
    1011010000
    4
    10 5 4
    
    예상 출력
    9