P16469 [GKS 2013 #A] Read Phone Number
题目描述
你知道如何用英文读出电话号码吗?现在让我来告诉你。
例如,在中国,电话号码是 $11$ 位数字,如:$15012233444$。有人将号码划分为 $3$-$4$-$4$ 的格式,即 $150 \ 1223 \ 3444$;而有人则将号码划分为 $3$-$3$-$5$ 的格式,即 $150 \ 122 \ 33444$。不同的格式会导致读出这些数字的方式不同:
$150 \ 1223 \ 3444$ 读作 one five zero one double two three three triple four。
$150 \ 122 \ 33444$ 读作 one five zero one double two double three triple four。
现在问题来了:
给定一个电话号码列表以及划分格式,请输出这些号码的正确读法。
规则:
单个数字只需分开读出。
连续 $2$ 个相同数字使用 double。
连续 $3$ 个相同数字使用 triple。
连续 $4$ 个相同数字使用 quadruple。
连续 $5$ 个相同数字使用 quintuple。
连续 $6$ 个相同数字使用 sextuple。
连续 $7$ 个相同数字使用 septuple。
连续 $8$ 个相同数字使用 octuple。
连续 $9$ 个相同数字使用 nonuple。
连续 $10$ 个相同数字使用 decuple。
连续超过 $10$ 个相同数字则全部分开读出。
输入格式
第一行包含一个整数 $T$,表示测试用例的数量。接下来 $T$ 行,每行包含一个测试用例。每个测试用例包含一个电话号码 $N$ 和一个划分格式 $F$,$F$ 是由一个或多个用连字符(-)分隔的正整数组成,这些整数不含前导零,且其总和总是等于电话号码的位数。
输出格式
对于每个测试用例,输出一行 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是英文读出的句子,单词之间用一个空格分隔。
说明/提示
### 限制
$1 \le T \le 100$。
**测试集 1 - 可见**
$1 \le \text{length of } N \le 10$。
**测试集 2 - 隐藏**
$1 \le \text{length of } N \le 100$。
翻译由 DeepSeek V4 Pro 完成