CF1411E Poman Numbers
题目描述
你收到了朋友给你的一串由 $n$ 个小写英文字母组成的字符串 $S$。事实证明,这其实是用“poman 数字”书写的一个数字。poman 数字系统早已被遗忘,只留下了将 poman 数字转换为我们熟悉的数字系统的算法。字符串 $S$ 的字符从左到右编号为 $1$ 到 $n$。我们用 $f(S)$ 表示 $S$ 的值,其定义如下:
- 如果 $|S| > 1$,可以任选一个整数 $m$($1 \le m < |S|$),定义 $f(S) = -f(S[1, m]) + f(S[m + 1, |S|])$,其中 $S[l, r]$ 表示 $S$ 的第 $l$ 个到第 $r$ 个字符组成的子串(包含两端)。
- 否则 $S = c$,其中 $c$ 是某个英文字母。此时 $f(S) = 2^{pos(c)}$,其中 $pos(c)$ 表示字母 $c$ 在字母表中的位置($pos(a) = 0$,$pos(z) = 25$)。
注意,每一步可以独立选择 $m$。
你的朋友认为,通过在每一步选择合适的 $m$,可以得到 $f(S) = T$。他对吗?
输入格式
第一行包含两个整数 $n$ 和 $T$($2 \leq n \leq 10^5$,$-10^{15} \leq T \leq 10^{15}$)。
第二行包含一个由 $n$ 个小写英文字母组成的字符串 $S$。
输出格式
如果可以得到期望的值,输出 "Yes";否则输出 "No"。
你可以用任意大小写输出答案。
说明/提示
在第二个样例中,你无法得到 $-7$。但你可以得到 $1$,例如如下操作:
1. 首先选择 $m = 1$,则 $f(abc) = -f(a) + f(bc)$。
2. $f(a) = 2^0 = 1$。
3. $f(bc) = -f(b) + f(c) = -2^1 + 2^2 = 2$。
4. 最终 $f(abc) = -1 + 2 = 1$。
由 ChatGPT 4.1 翻译