#P1312. Numerically Speaking

Numerically Speaking

描述

一位填字游戏(以及其他类似的文字游戏)开发者决定为所有长度在 11 20 20 个字符之间的单词与唯一整数建立一种映射关系。这种映射非常简单,首先按照单词的长度进行排序,然后再按字母顺序排列。下面展示了部分映射列表:

    a          1
    b          2
   ...
    z          26
    aa         27
    ab         28
   ...
    snowfall   157,118,051,752
   ...

在这个问题中,你的任务是开发一个程序,能够双向地在唯一的单词编号和对应的单词之间进行转换。

输入

程序的输入是一个单词和数字的列表,每行一个,从第一列开始输入,接着是一行仅在第一列包含一个星号 * 的行。一个数字将仅由十进制数字(00 99)组成,并且紧接着是行尾(也就是说,输入的数字中不会有逗号)。一个单词将由1 1 2020 个小写字母(aa z z)组成。

输出

对于输入数据中的每个单词或数字,输出都应包含一行。这一行应从第一列开始包含单词,接着是适当数量的空格,然后从第23 23 列开始是对应的单词编号。对于超过三位数的单词编号,必须在千位、百万位等位置用逗号分隔。

输入示例

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 年北美中北部地区竞赛