Similar String
题目描述
对于字符集\(S\)上的两个长度均为\(n\)的字符串\(A[0 \cdots n-1]\)和\(B[0 \cdots n-1]\),定义它们两个“相似”的条件为:存在一个\(S \rightarrow S\)的 一一对应 的映射\(f\),对于所有的\(i=0, 1 \cdots n-1\)均满足\(f(A[i])=B[i]\)且\(f^{-1}(B[i])=A[i]\)。
“一一对应”指的是:\(f(a)\)的值是唯一确定的,且对于任意两个元素\(a,b\),若\(a \ne b\)则必然有\(f(a) \ne f(b)\)。\(f^{-1}\)表示\(f\)的逆映射,若\(f(a)=b\),则\(f^{-1}(b)=a\)。
例如字符串\(A=\)ABCBDA
和\(B=\)CBDBAC
满足上述的相似条件,其中映射\(f\)为A->C, B->B, C->D, D->A
。而字符串ABACD
和CACAE
就不相似。
取字符集\(S\)为26个大写英文字母,现有\(Q\)次询问,每次询问给定两个参数\(N, K\),试构造一个字符串集合\(T\),使之满足如下条件:
1. 满足集合的互异性;
2. \(\lvert T \rvert = K\),即该集合中共有\(K\)个字符串;
3. \(\forall A \in T, \lvert A \rvert = N\),即该集合中每个字符串的长度均为\(N\);
4. 集合中的字符串两两 不相似 ;
5. 在满足上述限制的前提下,要求\(T\)中最大的字符串尽可能小,这里的“大”和“小”均指字典序。
对于每次询问,你只需要输出\(T\)中最大的那个字符串。
输入格式
第一行是一个正整数\(Q\),表示询问次数;
之后\(Q\)行,每行两个正整数\(N, K\),含义见上。数据保证解存在。
输出格式
每个询问输出一行,表示构造的集合\(T\)中最大的那个字符串。
样例
输入
2
3 2
3 5
输出
AAB
ABC
样例说明
对于第一次询问,\(T\)中字符串从小到大为:AAA
、AAB
对于第二次询问,\(T\)中字符串从小到大为:AAA
、AAB
、ABA
、ABB
、ABC
。此外可以验证,当\(N = 3, K \ge 6\)时答案不存在。
数据规模及约定
对于20%的数据:\(Q \le 10, \quad N \le 5, \quad K \le 50\)
对于40%的数据:\(Q \le 10, \quad N \le 8, \quad K \le 4 \times 10^3\)
对于60%的数据:\(Q \le 10, \quad N \le 11, \quad K \le 6.5 \times 10^5\)
对于100%的数据:\(Q \le 10^4, \quad N \le 24, \quad K \le 4.5 \times 10^{17}\)
以上各个大类中,各自有50%数据满足:整个测试文件中\(N\)的取值只有一个。
时间限制1s,空间限制64MB。
信息
- ID
- 1057
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 通过率
- 100%
- 上传者