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 完成