CF1328B K-th Beautiful String
题目描述
给定一个整数 $n$($n > 2$),我们要写出所有长度为 $n$ 的字符串,这些字符串包含 $n-2$ 个字母 'a' 和两个字母 'b',并按照字典序(字母序)排列。
回忆一下,长度为 $n$ 的字符串 $s$ 若满足存在某个 $i$($1 \le i \le n$),使得 $s_i < t_i$,并且对于任意 $j$($1 \le j < i$)都有 $s_j = t_j$,那么字符串 $s$ 在字典序上小于字符串 $t$。现代编程语言中的字符串比较操作符 < 就是实现的字典序比较。
例如,如果 $n=5$,所有可能的字符串如下(顺序很重要):
1. aaabb
2. aabab
3. aabba
4. abaab
5. ababa
6. abbaa
7. baaab
8. baaba
9. babaa
10. bbaaa
很容易证明,这样的字符串一共有 $\frac{n \cdot (n-1)}{2}$ 个。
现在给定 $n$($n > 2$)和 $k$($1 \le k \le \frac{n \cdot (n-1)}{2}$),请输出上述列表中第 $k$ 个字符串。
输入格式
输入包含一个或多个测试用例。
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来有 $t$ 行,每行包含两个整数 $n$ 和 $k$($3 \le n \le 10^5, 1 \le k \le \min(2 \cdot 10^9, \frac{n \cdot (n-1)}{2})$)。
所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,输出长度为 $n$ 的字符串,即上述列表中第 $k$ 个字符串。字符串按字典序排列。
说明/提示
由 ChatGPT 4.1 翻译