CF1622D.Shuffle

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a binary string (i. e. a string consisting of characters 0 and/or 1) ss of length nn . You can perform the following operation with the string ss at most once: choose a substring (a contiguous subsequence) of ss having exactly kk characters 1 in it, and shuffle it (reorder the characters in the substring as you wish).

Calculate the number of different strings which can be obtained from ss by performing this operation at most once.

输入格式

The first line contains two integers nn and kk ( 2n50002 \le n \le 5000 ; 0kn0 \le k \le n ).

The second line contains the string ss of length nn , consisting of characters 0 and/or 1.

输出格式

Print one integer — the number of different strings which can be obtained from ss by performing the described operation at most once. Since the answer can be large, output it modulo 998244353998244353 .

输入输出样例

  • 输入#1

    7 2
    1100110

    输出#1

    16
  • 输入#2

    5 0
    10010

    输出#2

    1
  • 输入#3

    8 1
    10001000

    输出#3

    10
  • 输入#4

    10 8
    0010011000

    输出#4

    1

说明/提示

Some strings you can obtain in the first example:

  • to obtain 0110110, you can take the substring from the 11 -st character to the 44 -th character, which is 1100, and reorder its characters to get 0110;
  • to obtain 1111000, you can take the substring from the 33 -rd character to the 77 -th character, which is 00110, and reorder its characters to get 11000;
  • to obtain 1100101, you can take the substring from the 55 -th character to the 77 -th character, which is 110, and reorder its characters to get 101.

In the second example, k=0k = 0 so you can only choose the substrings consisting only of 0 characters. Reordering them doesn't change the string at all, so the only string you can obtain is 10010.

首页