#P1312. Numerically Speaking
Numerically Speaking
描述
一位填字游戏(以及其他类似的文字游戏)开发者决定为所有长度在 到个字符之间的单词与唯一整数建立一种映射关系。这种映射非常简单,首先按照单词的长度进行排序,然后再按字母顺序排列。下面展示了部分映射列表:
a 1
b 2
...
z 26
aa 27
ab 28
...
snowfall 157,118,051,752
...
在这个问题中,你的任务是开发一个程序,能够双向地在唯一的单词编号和对应的单词之间进行转换。
输入
程序的输入是一个单词和数字的列表,每行一个,从第一列开始输入,接着是一行仅在第一列包含一个星号 *
的行。一个数字将仅由十进制数字(到 )组成,并且紧接着是行尾(也就是说,输入的数字中不会有逗号)。一个单词将由到 个小写字母(到)组成。
输出
对于输入数据中的每个单词或数字,输出都应包含一行。这一行应从第一列开始包含单词,接着是适当数量的空格,然后从第列开始是对应的单词编号。对于超过三位数的单词编号,必须在千位、百万位等位置用逗号分隔。
输入示例
29697684282993
transcendental
28011622636823854456520
computationally
zzzzzzzzzzzzzzzzzzzz
*
输出示例
elementary 29,697,684,282,993
transcendental 51,346,529,199,396,181,750
prestidigitation 28,011,622,636,823,854,456,520
computationally 232,049,592,627,851,629,097
zzzzzzzzzzzzzzzzzzzz 20,725,274,851,017,785,518,433,805,270
来源
1997 年北美中北部地区竞赛