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

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

주목도 지수

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

요약
소수 P와 숫자 문자열 T가 주어질 때, T[l..r]의 부분 문자열 중 P로 나누어지는 수의 개수를 묻는 질의에 답한다.
난이도

어려움10점 중 9점

유형
정수론, 누적 합, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

숫자 문자열 SS와 주어진 소수 PP에 대해 주목도 지수를 다음과 같이 정의한다. 1≤i≤j≤∣S∣1 \le i \le j \le |S|인 위치 쌍 i,ji,j 가운데, SS의 ii번째부터 jj번째까지의 숫자를 순서대로 이어 붙여 만든 수가 PP로 나누어떨어지는 쌍의 개수이다. 앞에 0이 붙은 수는 앞의 0을 뺀 수와 같은 것으로 본다.

예를 들어 문자열 070070과 P=13P=13에 대해 조건을 만족하는 쌍은 (1,1)(1,1), (1,5)(1,5), (1,6)(1,6), (2,5)(2,5), (2,6)(2,6), (3,3)(3,3), (3,4)(3,4), (4,4)(4,4), (6,6)(6,6)이다. 따라서 이 문자열의 주목도 지수는 9이다.

숫자 문자열 TT와 소수 PP가 주어진다. qq개의 질의 "TT의 ll번째부터 rr번째까지의 부분 문자열의 주목도 지수를 구하라"에 답해야 한다.

입력

첫째 줄에 소수 PP가 하나 주어진다 (2≤P≤109+72 \le P \le 10^9+7). 둘째 줄에 숫자 문자열 TT가 주어진다 (1≤∣T∣≤1051 \le |T| \le 10^5). 셋째 줄에 정수 qq가 하나 주어진다. 이는 질의의 개수이다 (1≤q≤1051 \le q \le 10^5).

이어지는 qq개의 줄 각각은 질의 하나를 나타내며, 두 정수 ll과 rr을 포함한다. 이는 주목도 지수를 구하려는 부분 문자열의 왼쪽과 오른쪽 경계이다 (1≤l≤r≤∣T∣1 \le l \le r \le |T|).

출력

각 질의마다 해당 부분 문자열의 주목도 지수를 한 줄에 하나씩 정수로 출력한다.

예제1

  1. 예제 1

    입력
    13
    070070
    3
    1 6
    2 5
    2 2
    
    예상 출력
    9
    4
    0