C1075 - 下一个识别码
题目描述
每台计算机的一个基本组成部分将是一个唯一的识别码,由最多50个字符组成,这些字符取自26个小写字母。对于任何给定的代码,字符集的选择有些随意。将代码印刷到芯片上的复杂方式使得制造商更容易生产出其他代码的重新排列,而不是生产出不同选择字母的新代码。因此,一旦一组字母被选择,所有从中可推导出的可能代码都会在更改该组之前使用。
例如,假设决定一个代码将恰好包含3个a,2个b和1个c,那么在这些条件下允许的60个代码中,其中三个是:
abaabc
abaacb
ababac
这三个代码按照字典顺序从上到下列出。在使用这组字符生成的所有识别码中,这些识别码按照这个顺序连续出现。
编写一个程序来协助发放这些识别码。您的程序将接受一个最多包含50个小写字母的序列(可能包含重复字符),并打印出后续的识别码(如果存在的话),或者如果给定的代码是该字符集序列中的最后一个,则打印消息No Successor。
输入格式、
输入将由一系列行组成,每行包含一个表示识别码的字符串。整个文件将以包含单个#的行终止。
输出格式
对于每个输入的识别码,对应有一行输出,是该识别码的下一个后继识别码或单词No Successor(代表已经是最后一个识别码了)
输入输出样例
| 输入样例 | 输出样例 |
|---|---|
| abaacb cbbaa # |
ababac No Successor |
数据范围与提示
对于100%的数据满足:1 <= 每行序列的字符串长度 <= 50,全部都是小写字母,可以重复出现
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式
1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1075.in,输出文件名为:C1075.out