아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

숫자열 조각 세기

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

요약
10^18 이하의 서로 겹치지 않는 정수 구간들의 합집합에 속한 모든 수의 십진 표현에서 각 숫자열이 연속 부분 문자열로 몇 번 나타나는지 센다.
난이도

어려움10점 중 9점

유형
문자열 매칭, 동적 계획법, 수학, 구현
정답자
아직 제출이 없습니다

문제

양의 정수들의 집합 AA가 닫힌 구간들의 합집합으로 주어진다. 숫자로 이루어진 문자열 xx에 대해, xx가 집합 AA에 속한 수들의 십진 표기 안에서 조각(연속된 부분 문자열)으로 몇 번 나타나는지 구하라. 하나의 수 안에서 xx가 여러 번 나타나면 각 등장을 모두 센다. 등장 위치는 서로 겹칠 수 있다.

입력

첫째 줄에 두 정수 nn과 mm이 주어진다 (1≤n≤50001 \le n \le 5000, 1≤m≤5000001 \le m \le 500000). nn은 집합 AA를 이루는 구간의 개수, mm은 질의의 개수이다.

다음 nn개의 줄에는 각각 두 정수 aia_i와 bib_i가 주어지며, 1≤a1≤b1<a2≤b2<a3≤b3<⋯<an≤bn≤10181 \le a_1 \le b_1 < a_2 \le b_2 < a_3 \le b_3 < \dots < a_n \le b_n \le 10^{18}을 만족한다. 이 값들은 집합 A=[a1,b1]∪[a2,b2]∪⋯∪[an,bn]A = [a_1, b_1] \cup [a_2, b_2] \cup \dots \cup [a_n, b_n]을 나타내며, 각 구간은 양 끝을 포함한다.

이어지는 mm개의 줄에는 각각 하나의 질의가 주어진다. 질의는 길이가 11 이상 1919 이하인 숫자 문자열 xjx_j이며, 각 자리는 00부터 99까지의 숫자이다. 질의 문자열은 숫자 00으로 시작할 수 있다.

출력

mm개의 줄을 출력한다. jj번째 줄에는 정수 하나를 출력하는데, 이는 집합 AA에 속한 모든 수 안에서 xjx_j가 조각으로 나타나는 총 횟수이다. 한 수 안에서 반복되거나 겹쳐서 나타나는 경우도 각각 따로 센다.

예제3

  1. 예제 1

    입력
    1 3
    2220 2223
    222
    0
    07
    
    예상 출력
    5
    1
    0
    
  2. 예제 2

    입력
    1 1
    1 10
    1
    
    예상 출력
    2
    
  3. 예제 3

    입력
    2 2
    1 5
    100 105
    0
    1
    
    예상 출력
    7
    8