[HNOI2016]大数
题号:NC20117
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小 B 有一个很大的数 S,长度达到了 N 位;这个数可以看成是一个串,它可能有前导 0,例如00009312345 。
小B还有一个素数P。现在,小 B 提出了 M 个询问,每个询问求 S 的一个子串中有多少子串是 P 的倍数(0 也 是P 的倍数)。
例如 S为0077时,其子串 007有6个子串:0,0,7,00,07,007;显然0077的子串007有6个子串都是素数7的倍数。

输入描述:

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

输出描述:

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

输入

复制
11 
121121 
3 
1 6 
1 5 
1 4

输出

复制
5
3
2

说明

第一个询问问的是整个串,满足条件的子串分别有:121121,2112,11,121,121。

备注:

对于100%的数据,
,S中只有数字字符,p为素数。