#2994. Divisible Substring

0
    ID: 2994 传统题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>AtCoderabc158EGESP 5级前缀和数论桶思想

Divisible Substring

Divisible Substring

题目描述

Takahashi 有一个长度为 NN 的字符串 SS,由数字 00 到 99 组成。 他很喜欢素数 PP。他想知道将 SS 的多少个非空(连续)子字符串 —— 总共有 N×(N+1)/2N \times (N + 1) / 2 个 —— 当作十进制整数时能被 PP 整除。 这里以 00 开头的子字符串也算数,并且来源于 SS 不同位置的子字符串即使作为字符串或整数相同也被区分。 计算这个计数以帮助 Takahashi。

输入格式

Input is given from Standard Input in the following format: NN PP SS

输出格式

Print the number of non-empty (contiguous) substrings of SS that are divisible by PP when regarded as an integer written in base ten.

4 3
3543
6
4 2
2020
10
20 11
33883322005544116655
68

提示

1≤N≤2×1051 \leq N \leq 2 \times 10^5 SS consists of digits. ∣S∣=N|S| = N 2≤P≤100002 \leq P \leq 10000 PP is a prime number.这里 SS = 35433543。共有十个非空(连续)子字符串:

33:能被 33 整除。

3535:不能被 33 整除。

354354:能被 33 整除。

35433543:能被 33 整除。

55:不能被 33 整除。

5454:能被 33 整除。

543543:能被 33 整除。

44:不能被 33 整除。

4343:不能被 33 整除。

33:能被 33 整除。

其中六个能被 33 整除,所以输出 66。
这里 SS = 20202020。共有十个非空(连续)子字符串,全部都能被 22 整除,所以输出 1010。 注意以 00 开头的子字符串也算数。

标签: AtCoder|abc158E

来源

AtCoder|abc158E