Problem3053--困难的串[Krypton Factor,UVa129]

3053: 困难的串[Krypton Factor,UVa129]

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

“超级氪因素大赛”(一档心智竞答节目)的主办方雇你来对付那些足智多谋的参赛选手。在比赛中,节目主持人将念出一长串的字母来考验选手的记忆能力。因为许多选手都是这方面的高手,为了增加比赛的难度,主办方决定不再使用那些含有特定重复子串的字符串。但是他们又不能将所有重复的子串都删掉,如果那样的话字符串中就不存在两个相同的单字了,这反倒会让问题变的非常简单。为了解决这一问题,他们决定仅删除那些包含相邻重复子串的字符串。我们将存在上述相邻重复情况的字符串称为“easy”(简单),否则称为“hard”(难)。
比如,字符串ABACBCBAD就是一个“easy”,因为它里面有相邻的重复子串“CB”。另举一些“easy”字串的例子如下:
BB
ABCDACABCAB
ABCDABCD
下面是一些“hard”字符串的例子:
D
DC
ABDAB
CBABCBA
为了能给节目主持人提供无限量的问题字符串,要求你来写一个程序生成。

Input

输入包含多组数据。
每组数据,一行,包含两个整数n和L,n>0,0≤ L ≤26(对于给定的n和L,可以认为第n个“hard”是一定存在的。)
当遇到单独的一行“0 0”时,表示输入结束。
由于字符串可能会很长,输出的时候每4个字符为一组,每组之间用空格隔开。如果超过16组,则换一行再接着输出第17组。

Output

对于每组测试数据,输出两行
第一行按照字母表升序输出第n个“hard”字符串(字符串是由前L个字母构成)
第二行输出这个字符串的长度。
你的程序可以限定最大的字符串长度为80

Sample Input Copy

30 3
0 0

Sample Output Copy

ABAC ABCA CBAB CABA CABC ACBA CABA
28

HINT

按照上述规则,第一个字符串应该是“A”。例如:当L=3时,前7个“hard”字符串为:
A
AB
ABA
ABAC
ABACA
ABACAB
ABACABA
按照输出格式,对于n=7,L=3,输出应该为:
ABAC ABA
7

Source/Category