#P1146. ID Codes

    ID: 147 传统题 1000ms 256MiB 尝试: 4 已通过: 1 难度: 10 上传者: 标签>组合数学字符串New Zealand 1991 Division IUVA 146

ID Codes

题目描述

时间来到了2084年,“老大哥” 统治的时代终于来临了,尽管晚了一个世纪。为了对公民实施更强有力的控制,从而应对长期以来法律和秩序的崩溃,政府决定采取一项激进的措施 —— 所有公民都要通过外科手术在左手腕植入一台微型电脑。这台电脑将存储各种个人信息,同时还配备一个发射器,以便中央电脑能够记录和监控人们的行动。(这一举措还有一个额外的好处,那就是它将缩短等待接受整形手术的失业救济领取者的队伍。)

每台电脑的一个重要组成部分是一个唯一的识别码,该识别码由最多50个字符组成,字符取自26个小写字母。对于任何给定的识别码,其字符集的选择有点随意。由于将识别码刻印到芯片中的方式非常复杂,对于制造商来说,生成其他已存在识别码的重新排列形式的新识别码,要比生成使用不同字符选择的新识别码容易得多。因此,一旦选择了一组字符,在更换字符集之前,将使用由这组字符派生出来的所有可能的识别码。

例如,假设决定一个识别码将恰好包含33aa22bb11cc,那么在这些条件下,6060个允许的识别码中的三个是:

</p>

abaabc

abaacb

ababac

这三个识别码按从上到下的字母顺序列出。在使用这组字符生成的所有识别码中,这些识别码按此顺序连续出现。

编写一个程序来协助发放这些识别码。你的程序将接受一个由不超过50个小写字母组成的字符串序列(其中可能包含重复字符),如果存在后继识别码,则打印出后继识别码;如果给定的识别码是该组字符序列中的最后一个,则打印消息 “No Successor”。

输入格式

输入将由一系列行组成,每行包含一个表示识别码的字符串。整个文件将由一行仅包含单个 # 的行来终止。

输出格式

对于读取的每个识别码,输出将包含一行,该行包含后继识别码或 “No Successor” 字样。

abaacb
cbbaa
#
ababac
No Successor</code></pre>

来源

1991年新西兰一级竞赛,UVA 146