#P3864. [USACO1.2.3] 命名那个数字 Name That Number

[USACO1.2.3] 命名那个数字 Name That Number

Name That Number
注意本体需要文件IO且代码需要读取评测环境准备好的dict.txt文件

题目描述

在威斯康星州的大型养牛场中,为了满足会计部门的要求,习惯用序列号给牛打上烙印。然而,牛倌们并不欣赏这种归档系统的优点,他们更希望用顺口的名字来称呼自己的牛群,而不是说:“来吧,#4734,快走。”

请帮助这些可怜的牛倌,编写一个程序,将牛的烙印序列号翻译成与该序列号唯一对应的可能名字。由于如今牛倌们都有蜂窝式马鞍手机,请使用标准的电话键盘映射将数字转换为字母(忽略“Q”和“Z”):

          2: A,B,C     5: J,K,L    8: T,U,V
          3: D,E,F     6: M,N,O    9: W,X,Y
          4: G,H,I     7: P,R,S

可接受的牛名以文件“dict.txt”的形式提供给您,该文件包含少于 5,000 个可接受的牛名(全部大写)。取一头牛的烙印号码,并报告该号码映射出的所有可能的单词中,有哪些出现在给定的字典中。字典文件在测评环境中以 dict.txt 提供(已按升序排序)。

例如,烙印号码 4734 会产生以下所有名字:

GPDG GPDH GPDI GPEG GPEH GPEI GPFG GPFH GPFI GRDG GRDH GRDI
GREG GREH GREI GRFG GRFH GRFI GSDG GSDH GSDI GSEG GSEH GSEI
GSFG GSFH GSFI HPDG HPDH HPDI HPEG HPEH HPEI HPFG HPFH HPFI
HRDG HRDH HRDI HREG HREH HREI HRFG HRFH HRFI HSDG HSDH HSDI
HSEG HSEH HSEI HSFG HSFH HSFI IPDG IPDH IPDI IPEG IPEH IPEI
IPFG IPFH IPFI IRDG IRDH IRDI IREG IREH IREI IRFG IRFH IRFI
ISDG ISDH ISDI ISEG ISEH ISEI ISFG ISFH ISFI

巧合的是,这 81 个名字中唯一一个在有效名字列表中的是“GREG”。

编写一个程序,给定一头牛的烙印号码,打印出该号码可生成的所有有效名字,如果没有有效名字则输出“NONE”。序列号最多可以有 12 位数字。

输入格式

单行包含一个长度为 1 到 12 位的数字。

样例输入 (文件 namenum.in)

4734

输出格式

由输入可生成的有效名字列表,每行一个,按字母升序排列。

样例输出 (文件 namenum.out)

GREG