만드는 중입니다

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

그건 망고가 아니라 고양이예요

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

요약
기저 문자열 M0과 규칙 문자열 S가 주어지면, 각 $를 이전 단계 문자열로 바꾼 Mk에서 Q개 구간의 문자를 출력합니다.
난이도

보통10점 중 7점

유형
문자열, 재귀, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

고양이 '망고'

망고는 이하의 집에 사는 고양이이다. 이름은 집에 있던 망고주스와 색깔이 비슷해서 붙었다. 망고가 이 이름을 마음에 들어 하는지는 알 수 없다.

삶은 힘들지만 고양이는 귀엽다. 그래서 몇몇 사람들은 망고를 칭송하기도 하고, '망고가 얼망고?' 같은 말장난을 하거나 '망고 맛있겠다' 같은 중의적인 농담을 하기도 한다. 이하는 망고가 망고라고 주장하지만, 몇몇 사람들은 '그건 망고가 아니라 고양이예요'라고 말하게 되었다. 이하는 이 일을 계기로 PS 문제를 만들기로 했다.

기본 문자열 M_0M\_0와 규칙 문자열 SS가 있다고 하자. 이때 양의 정수 ii에 대해 M_iM\_i는 SS에 있는 모든 $ 문자를 문자열 M_i−1M\_{i-1}로 바꾼 문자열로 정의한다. 문자열이 길지 않다면 몇 개는 손으로 만들어 볼 수 있다. M_0M\_0을 그건 망고가 아니라 고양이예요, SS를 그건 "$"가 아니라 "$"예요라고 하면 M_0M\_0, M_1M\_1, M_2M\_2는 다음과 같다.

  • M_0M\_0 : 그건 망고가 아니라 고양이예요
  • M_1M\_1 : 그건 "그건 망고가 아니라 고양이예요"가 아니라 "그건 망고가 아니라 고양이예요"예요
  • M_2M\_2 : 그건 "그건 "그건 망고가 아니라 고양이예요"가 아니라 "그건 망고가 아니라 고양이예요"예요"가 아니라 "그건 "그건 망고가 아니라 고양이예요"가 아니라 "그건 망고가 아니라 고양이예요"예요"예요

M_3M\_3, M_4M\_4뿐만 아니라 M_1 000M\_{1\ 000}도 같은 원리로 만들 수 있다. 다만 문자열 길이가 너무 길어질 수 있어서 보통은 전체를 만들 수 없다. 그렇다고 전체가 꼭 필요하지는 않다. 이하는 이렇게 생성되는 문자열의 연속한 부분을 구하려고 한다.

입력

첫 번째 줄에는 기본 문자열 M_0M\_0가, 두 번째 줄에는 규칙 문자열 SS가 주어진다. 입력 문자열은 다음 조건을 만족한다.

  • 각 문자열의 길이는 11 이상 10510^5 이하이다.
  • 각 문자열의 모든 문자는 줄바꿈을 제외하고 ASCII 코드 값이 33 이상 126 이하이다. 즉, 제어 문자(control character)가 아닌 출력 가능한 문자(printable character)로만 이루어져 있다.
  • M_0M\_0에는 $ (ASCII 코드 36) 문자가 없다.
  • SS에는 $ (ASCII 코드 36) 문자가 최소 하나 있다.

세 번째 줄에는 두 양의 정수 kk와 QQ가 공백으로 구분되어 주어진다. (1≤k≤1051 \leq k \leq 10^5, 1≤Q≤1051 \leq Q \leq 10^5)

네 번째 줄부터 QQ개의 줄에 걸쳐 질의가 주어진다. 이 중 ii번째 줄에는 두 정수 a_ia\_i와 b_ib\_i가 공백으로 구분되어 주어진다. (1≤a_i≤b_i≤10181 \leq a\_i \leq b\_i \leq 10^{18}, b_i−a_i<105b\_i - a\_i < 10^5)

b_ib\_i는 M_kM\_k의 길이를 넘지 않으며, b_i−a_i+1b\_i - a\_i + 1의 합은 5×1055 \times 10^5을 넘지 않는다.

출력

QQ개의 줄에 걸쳐 M_kM\_k의 부분 문자열을 출력한다. ii번째 줄에는 M_kM\_k의 a_ia\_i번째 글자부터 b_ib\_i번째 글자까지, 총 b_i−a_i+1b\_i-a\_i+1개의 문자를 출력한다.

예제3

  1. 예제 1

    입력
    It's_a_cat,_not_a_mango
    It's_"$",_not_"$"
    1 6
    1 20
    18 35
    49 61
    29 40
    41 50
    5 5
    
    예상 출력
    It's_"It's_a_cat,_no
    _not_a_mango",_not
    _not_a_mango"
    o",_not_"It'
    s_a_cat,_n
    _
    
  2. 예제 2

    입력
    Ad_finitum
    $
    100000 4
    1 10
    1 2
    4 10
    5 8
    
    예상 출력
    Ad_finitum
    Ad
    finitum
    init
    
  3. 예제 3

    입력
    THE_END
    $_IS_NEVER_$_IS_NEVER_$
    88 5
    1 7
    3256 3257
    67706 67710
    111011 111017
    999999999999999968 999999999999999993
    
    예상 출력
    THE_END
    IS
    NEVER
    THE_END
    _THE_END_IS_NEVER_THE_END_