#P16147. [ICPC 2017 NAIPC] Incremental Double Free Strings

[ICPC 2017 NAIPC] Incremental Double Free Strings

题目描述

如果一个字符串中没有两个相邻的字母相同,则称该字符串是 双自由 的。

如果一个字符串满足:对于区间 [1,k][1, k] 内的每个 jj,恰好存在一个字符出现了 jj 次,并且字符串的长度为 1+2+3++(k1)+k1 + 2 + 3 + \ldots + (k - 1) + k,则称该字符串是 kk-增量 的。例如,当 k=3k = 3 时,一个 3-增量 字符串应有一个字符出现一次,另一个字符出现两次,另一个字符出现三次(顺序任意),总长度为 66

如果一个字符串同时满足 kk-增量双自由 的条件,则称其满足两个条件。现在考虑按字母顺序排列所有由小写字母组成的、对于给定 kk 满足上述条件的字符串。例如:

k=2k = 2: aba, aca, ada, \ldots, aya, aza, bab, bcb, bdb, \ldots, zxz, zyz

k=3k = 3: ababac, ababad, \ldots, ababay, ababaz, ababca, \ldots, zyzyzx

在所有满足 kk-增量双自由 的字符串的字母序列表中,第 nn 个字符串是什么?

输入格式

每个输入包含单个测试用例。请注意,你的程序可能会在不同输入上多次运行。输入只有一行,包含两个整数 kknn1k261 \leq k \leq 261n10181 \leq n \leq 10^{18}),表示要求的是字母序列表中第 nn 个满足条件的字符串。

输出格式

输出字母序列表中第 nnkk-增量双自由 的字符串。如果不存在这样的字符串,则输出 1-1

2 650
zyz
2 651
-1
5 12345678901234
yuzczuyuyuzuyci

提示

翻译由 DeepSeek V3.2 完成