Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB

#2948. 「HNOI2016」大数

Statistics

题目描述

小 B 有一个很大的数 $ S $,长度达到了 $ N $ 位;这个数可以看成是一个串,它可能有前导 $ 0 $,例如 00009312345 。小 B 还有一个素数 $ P $。

现在,小 B 提出了 $ M $ 个询问,每个询问求 $ S $ 的一个子串中有多少子串是 $ P $ 的倍数($ 0 $ 也是 $ P $ 的倍数)。例如 $ S $ 为 0077 时,其子串 007 有六个子串:0, 0, 7, 00, 07, 007;显然 0077 的子串 077 的六个子串都是素数 $ 7 $ 的倍数。

输入格式

第一行一个整数:$ P $。
第二行一个串:$ S $。
第三行一个整数:$ M $。
接下来 $ M $ 行,每行两个整数 $ \text{fr}, \text{to}$,表示对 $ S $ 的子串 $S[\text{fr} \ldots \text {to}]$ 的一次询问。
注意:$ S $ 的最左端的数字的位置序号为 $ 1 $;例如 $ S $ 为 $ 213567 $,则 $ S[1] $ 为 $ 2 $,$ S[1 \ldots 3] $为 $ 213 $。

输出格式

输出 $ M $ 行,每行一个整数,第 $ i $ 行是第 $ i $ 个询问的答案。

样例

input

11
121121
3
1 6
1 5
1 4

output

5
3
2

第一个询问问的是整个串,满足条件的子串分别有:121121211211121121

数据范围与提示

对于所有的数据,$ N,M \leq 100000 $,$ P $ 为素数。