CF1925A We Got Everything Covered!
题目描述
给定两个正整数 $n$ 和 $k$。
你的任务是找到一个字符串 $s$,使得用前 $k$ 个小写英文字母能够组成的所有长度为 $n$ 的字符串都作为 $s$ 的子序列出现。
如果有多个答案,输出长度最短的那个。如果仍有多个答案,可以输出其中任意一个。
注意:如果字符串 $a$ 可以通过从字符串 $b$ 中删除若干(可能为零)个字符且不改变剩余字符的顺序得到,则称 $a$ 是 $b$ 的一个子序列。
输入格式
输入的第一行包含一个整数 $t$($1\leq t\leq 676$),表示测试用例的数量。
每个测试用例包含一行,包含两个整数 $n$($1\leq n\leq 26$)和 $k$($1\leq k\leq 26$)。
输出格式
对于每个测试用例,输出一行,包含一个满足上述条件的字符串 $s$。如果有多个答案,输出长度最短的那个。如果仍有多个答案,可以输出其中任意一个。
说明/提示
对于第一个测试用例,可以用前 $2$ 个小写英文字母组成的长度为 $1$ 的字符串有两个,它们作为子序列出现在 $s$ 中,如下所示:
- $\texttt{a}: {\color{red}{\texttt{a}}}\texttt{b}$
- $\texttt{b}: \texttt{a}{\color{red}{\texttt{b}}}$
对于第二个测试用例,只能用第一个小写英文字母组成长度为 $2$ 的字符串,它作为子序列出现在 $s$ 中,如下所示:
- $\texttt{aa}: {\color{red}{\texttt{aa}}}$
对于第三个测试用例,可以用前 $2$ 个小写英文字母组成的长度为 $2$ 的字符串有 $4$ 个,它们作为子序列出现在 $s$ 中,如下所示:
- $\texttt{aa}: \texttt{b}{\color{red}{\texttt{aa}}}\texttt{b}$
- $\texttt{ab}: \texttt{ba}{\color{red}{\texttt{ab}}}$
- $\texttt{ba}: {\color{red}{\texttt{ba}}}\texttt{ab}$
- $\texttt{bb}: {\color{red}{\texttt{b}}}\texttt{aa}{\color{red}{\texttt{b}}}$
对于第四个测试用例,可以用前 $3$ 个小写英文字母组成的长度为 $2$ 的字符串有 $9$ 个,它们作为子序列出现在 $s$ 中,如下所示:
- $\texttt{aa}: {\color{red}{\texttt{a}}}\texttt{bcb}{\color{red}{\texttt{a}}}\texttt{c}$
- $\texttt{ab}: {\color{red}{\texttt{ab}}}\texttt{cbac}$
- $\texttt{ac}: \texttt{abcb}{\color{red}{\texttt{ac}}}$
- $\texttt{ba}: \texttt{abc}{\color{red}{\texttt{ba}}}\texttt{c}$
- $\texttt{bb}: \texttt{a}{\color{red}{\texttt{b}}}\texttt{c}{\color{red}{\texttt{b}}}\texttt{ac}$
- $\texttt{bc}: \texttt{a}{\color{red}{\texttt{bc}}}\texttt{bac}$
- $\texttt{ca}: \texttt{ab}{\color{red}{\texttt{c}}}\texttt{b}{\color{red}{\texttt{a}}}\texttt{c}$
- $\texttt{cb}: \texttt{ab}{\color{red}{\texttt{cb}}}\texttt{ac}$
- $\texttt{cc}: \texttt{ab}{\color{red}{\texttt{c}}}\texttt{ba}{\color{red}{\texttt{c}}}$
由 ChatGPT 4.1 翻译