E - Divisible Substring Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500

問題文

高橋君は 0 から 9 までの数字から成る長さ N の文字列 S を持っています。

素数 P が好きな高橋君は、S の空でない連続する部分文字列 N \times (N + 1) / 2 個のうち、十進表記の整数と見なした際に P で割り切れるものの個数を知りたくなりました。

ただし部分文字列は先頭が 0 であっても良いものとし、文字列として等しい場合や、整数と見なした際に等しい場合も、部分文字列の S 内の位置で区別します。

高橋君のためにこの個数を計算してください。

制約

  • 1 \leq N \leq 2 \times 10^5
  • S は数字から成る
  • |S| = N
  • 2 \leq P \leq 10000
  • P は素数である

入力

入力は以下の形式で標準入力から与えられる。

N P
S

出力

S の空でない連続する部分文字列であって、十進表記の整数と見なした際に P で割り切れるものの個数を出力せよ。


入力例 1

4 3
3543

出力例 1

6

S = 3543 です。S の空でない連続する部分文字列は次の 10 個があります。

  • 33 で割り切れる。

  • 353 で割り切れない。

  • 3543 で割り切れる。

  • 35433 で割り切れる。

  • 53 で割り切れない。

  • 543 で割り切れる。

  • 5433 で割り切れる。

  • 43 で割り切れない。

  • 433 で割り切れない。

  • 33 で割り切れる。

このうち 3 で割り切れるものは 6 個であるので、6 を出力してください。


入力例 2

4 2
2020

出力例 2

10

S = 2020 です。S の空でない連続する部分文字列は 10 個ありますが、その全てが 2 で割り切れるので 10 を出力してください。

先頭が 0 である部分文字列も許容されることに注意してください。


入力例 3

20 11
33883322005544116655

出力例 3

68

Score : 500 points

Problem Statement

Takahashi has a string S of length N consisting of digits from 0 through 9.

He loves the prime number P. He wants to know how many non-empty (contiguous) substrings of S - there are N \times (N + 1) / 2 of them - are divisible by P when regarded as integers written in base ten.

Here substrings starting with a 0 also count, and substrings originated from different positions in S are distinguished, even if they are equal as strings or integers.

Compute this count to help Takahashi.

Constraints

  • 1 \leq N \leq 2 \times 10^5
  • S consists of digits.
  • |S| = N
  • 2 \leq P \leq 10000
  • P is a prime number.

Input

Input is given from Standard Input in the following format:

N P
S

Output

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


Sample Input 1

4 3
3543

Sample Output 1

6

Here S = 3543. There are ten non-empty (contiguous) substrings of S:

  • 3: divisible by 3.

  • 35: not divisible by 3.

  • 354: divisible by 3.

  • 3543: divisible by 3.

  • 5: not divisible by 3.

  • 54: divisible by 3.

  • 543: divisible by 3.

  • 4: not divisible by 3.

  • 43: not divisible by 3.

  • 3: divisible by 3.

Six of these are divisible by 3, so print 6.


Sample Input 2

4 2
2020

Sample Output 2

10

Here S = 2020. There are ten non-empty (contiguous) substrings of S, all of which are divisible by 2, so print 10.

Note that substrings beginning with a 0 also count.


Sample Input 3

20 11
33883322005544116655

Sample Output 3

68