28. 子序列中的 k 种字母(第一期模拟笔试)
内存限制:128 MB
时间限制:2.000 S
题目描述
一个序列的子序列是指从原序列中选取部分元素,并保持它们在原序列中的相对顺序所形成的新序列。这意味着在子序列中,元素的相对顺序与它们在原序列中的相对顺序保持一致,但不一定要求是连续的。注意,原序列也可以视为自己的子序列。
现有一个长度为 n 的仅由小写字母组成的字符串 s,求 s 有多少个子序列恰好包含 k 种字母。
输入
输入仅包含一组测试数据。测试数据包含两行:
第一行包含两个整数 n 和 k(1 ≤ n ≤ 1000,1 ≤ k ≤ 26),用空格隔开,表示字符串的长度和符合要求的子序列的所需长度。
第二行是一个由小写字母组成的字符串,长度为 n。
输出
对于输入的测试数据,输出一个整数,表示计算得到的答案。
样例输入 复制
6 5
eecbad
样例输出 复制
3
提示
s有两个子序列"ecbad"满足要求(重复也算),同时s自身也满足要求,所以答案是3;
注意:由于答案会比较大,所以需要将答案对(10^9 + 7)取模以后再输出。