#G602. [GESP样题 六级 C++] 亲朋数

    ID: 75 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 普及+/提高 上传者: 标签>初等数论排列与组合字符串及其函数编程题c++

[GESP样题 六级 C++] 亲朋数

题目描述

给定一串长度为 LL、由数字 090\sim 9 组成的数字串 SS。容易知道,它的连续子串共有 L(L+1)2\frac{L(L + 1)}2 个。如果某个子串对应的数(允许有前导零)是 pp 的倍数,则称该子串为数字串 SS 对于 pp 的亲朋数。

例如,数字串 SS 为“ 1234212342 ”、pp22,则在 1515 个连续子串中,亲朋数有“ 1212 ”、“ 12341234 ”、“ 1234212342 ”、“ 22 ”、“ 234234 ”、“ 23422342 ”、“ 3434 ”、“ 342342 ”、“ 44 ”、“ 4242 ”、“ 22 ”共 1111 个。注意其中“ 22 ”出现了 22 次,但由于其在 SS 中的位置不同,记为不同的亲朋数。

现在,告诉你数字串 SS 和正整数 pp ,你能计算出有多少个亲朋数吗?

输入格式

输入的第一行,包含一个正整数 pp。约定 2p1282 \leq p \leq 128
输入的第二行,包含一个长为 LL 的数字串 SS。约定 1L1061 \leq L \leq 10^6

输出格式

输出一行一个整数表示答案。

测试样例

2
102
5
2
12342
11

说明/提示

样例 1 解释

55 个亲朋数,分别 101010210200020222