P12851 [NERC 2020 Online] Brain-teaser
题目描述
有一种被称为**数字谜题**(cryptoarithmetics)的智力游戏。经典的例子由 Henry Dudeney 在 1924 年 7 月的《Strand Magazine》上发表:
$$\begin{array}{cccccc}
& & \tt{S} & \tt{E} & \tt{N} & \tt{D} \\
+ & & \tt{M} & \tt{O} & \tt{R} & \tt{E} \\
\hline
= & \tt{M} & \tt{O} & \tt{N} & \tt{E} & \tt{Y}
\end{array}$$
这类谜题的解法需要将字母分配到 0 到 9 的十进制数字上,并满足以下约束条件:
- 每个字母必须对应一个不同的十进制数字。
- 每个数字的首位不能为零。
- 等式必须成立——即前两个数字的和等于第三个数字。
上述谜题的唯一解是 $\tt{O} = 0$,$\tt{M} = 1$,$\tt{Y} = 2$,$\tt{E} = 5$,$\tt{N} = 6$,$\tt{D} = 7$,$\tt{R} = 8$,$\tt{S} = 9$,对应的等式为:$9567 + 1085 = 10652$。
一个**好的**数字谜题(如经典示例)具有唯一解。题目会给出谜题的前两个单词,你的任务是从给定的字典中找出所有可能的第三个单词,使得它们与给定的前两个单词组合成一个具有唯一解的好谜题。
输入格式
输入的第一行和第二行各包含一个单词——谜题的两个加数。输入的第三行包含一个整数 $n$,表示字典中的单词数量,随后是 $n$ 行字典中的单词。字典中的单词按字典序排列。
输入中的所有单词由 2 到 15 个大写字母组成。除第一个测试点外,所有测试均使用相同的字典——包含 $279\,496$ 个单词的 2019 版 Collins Dictionary Scrabble Words。前两个单词也来自该字典。注意,你可以在可下载的问题示例文件中找到包含完整字典的第二个测试点,该文件与题目描述一同提供。
输出格式
第一行输出一个整数 $m$——字典中能与前两个给定单词组合成好谜题的单词数量。接下来的 $m$ 行按字典序输出这些单词。
说明/提示
翻译由 DeepSeek V3 完成