만드는 중입니다

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

문서 제출

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

요약
이진 문자열의 한 자리를 바꾸는 갱신과, x, x+k, x+2k, ... 위치 중 0인 자리의 개수를 묻는 질의가 주어집니다.
난이도

보통10점 중 6점

유형
배열, 수학, 구현
정답자
아직 제출이 없습니다

문제

ICPC 왕국의 모든 시민은 왕국이 발급한 문서 NN개를 항상 가지고 있어야 합니다. 문서에는 11부터 NN까지 번호가 붙어 있습니다. 경비원은 순찰 중에 시민들에게 문서를 무작위로 요구하곤 합니다.

Adrian도 ICPC 왕국의 시민이며 이 문서들을 가지고 있습니다. 다만 부주의로 일부 문서를 잃어버렸을 수 있습니다. Adrian이 가진 문서의 상태는 길이 NN의 문자열 BB로 나타냅니다. 문서 ii를 가지고 있으면 Bi=1B_i = 1이고, 없으면 Bi=0B_i = 0입니다.

다음 QQ일 동안 아래 세 가지 중 하나가 정확히 한 번 일어납니다.

  • 11 xx: Adrian이 잃어버렸던 문서 xx를 찾습니다. 그러면 BxB_x가 11이 됩니다. 이 일이 일어나기 직전에 Bx=0B_x = 0임이 보장됩니다.
  • 22 xx: Adrian이 문서 xx를 잃어버립니다. 그러면 BxB_x가 00이 됩니다. 이 일이 일어나기 직전에 Bx=1B_x = 1임이 보장됩니다.
  • 33 xx kk: 경비원이 x≤kx \le k인 상황에서, 1≤x+k⋅i≤N1 \le x + k \cdot i \le N을 만족하는 모든 0≤i0 \le i에 대해 문서 x+k⋅ix + k \cdot i를 요구합니다. 그 시점에 제출하지 못한 문서 하나당 Adrian은 벌금 1코인을 냅니다.

33번 일이 일어날 때마다 Adrian이 내야 하는 벌금의 합을 구하세요.

입력

첫 줄에 문서 개수 NN(1≤N≤2000001 \le N \le 200000)이 주어집니다. 둘째 줄에는 길이 NN의 문자열 BB가 주어지며, BB의 ii번째 글자가 문서 ii의 초기 상태 BiB_i(Bi∈{0,1}B_i \in \{0, 1\})입니다.

셋째 줄에 일수 QQ(1≤Q≤2000001 \le Q \le 200000)가 주어집니다. 이어지는 QQ개의 줄에는 각각 일이 하나씩 주어지며, 정수 tt(t∈{1,2,3}t \in \{1, 2, 3\})로 시작합니다. t=1t = 1 또는 t=2t = 2이면 정수 xx(1≤x≤N1 \le x \le N)가 뒤따릅니다. t=3t = 3이면 정수 xx와 kk(1≤x≤k≤N1 \le x \le k \le N)가 뒤따릅니다. 33번 일은 최소 한 번 있습니다.

출력

33번 일마다 Adrian이 내야 하는 벌금 코인 수를 한 줄에 하나씩 출력합니다.

예제2

  1. 예제 1

    입력
    10
    1010001001
    5
    3 1 2
    2 1
    1 5
    1 9
    3 1 1
    
    예상 출력
    2
    5
    
  2. 예제 2

    입력
    25
    0010000010100110100000101
    10
    3 2 4
    1 5
    1 21
    2 11
    2 5
    3 1 5
    1 5
    3 5 5
    3 3 8
    3 1 25
    
    예상 출력
    5
    4
    2
    2
    1