luogu#P8243. [COCI2013-2014#3] REČENICE
[COCI2013-2014#3] REČENICE
题目描述
很久以前,在一个只有数学学生居住的遥远国度里,Iva 和 Vedran 正在讨论一种特殊的句子。这些句子中正好有一个单词表示一个数字,并且这个数字等于句子中字母的总数。例如 This sentence has thirtyone letters.
和 Blah Blah seventeen
。
Jurica 无意中听到了朋友们的谈话,决定用他背诵的大量特殊的句子给他们留下深刻印象。他急忙回家,写了一个程序,给定一个句子,求出使得句子变得特殊的能放进去的最小数字。
不幸的是,他的电脑坏了,现在他需要你的帮助。写一个程序来帮助 Jurica!
以下是一些补充说明:
- 句子的形式是:$\textit{word}_1~\textit{word}_2~\textit{word}_3~\cdots~\textit{word}_{n-1}~\textit{word}_n$。这 个单词中恰好有一个
$
,表示需要填入的表示一个数字的单词。例如,this sentence has thirtyone letters
将变为this sentence has $ letters
。 - 用来表示数字的单词遵循如下规则:
- 对于所有 的整数,表示它们的单词从小到大依次为
one
、two
、three
、four
、five
、six
、seven
、eight
、nine
、ten
、eleven
、twelve
、thirteen
、fourteen
、fifteen
、sixteen
、seventeen
、eighteen
和nineteen
。 - 对于所有 的整十数,表示它们的单词从小到大依次为
twenty
、thirty
、forty
、fifty
、sixty
、seventy
、eighty
、ninety
。 - 对于所有 的整百数,表示它们的单词从小到大依次为
onehundred
、twohundred
、threehundred
、fourhundred
、fivehundred
、sixhundred
、sevenhundred
、eighthundred
、ninehundred
。 - 对于其它所有的两位数,先在开头放入表示不超过该数的最大的整十数的单词,再在后面拼接表示该两位数的个位数的单词。例如,表示整数 的单词为
sixtyeight
。 - 对于其它所有的三位数,先在开头放入表示不超过该数的最大的整百数的单词,再在后面拼接表示其后两位数的单词(按照前面的规则)。例如,表示整数 的单词分别为
threehundrednineteen
、fivehundredthirty
和ninehundredseventyone
。
- 对于所有 的整数,表示它们的单词从小到大依次为
输入格式
第一行输入一个整数 ,表示句子中的单词个数。
随后 行,每行一个字符串,表示句子中的所有单词。保证 $
在其中恰好出现一次。
输出格式
输出一行 个字符串,表示将 $
替换为使得句子特殊的表示最小数字的单词后的句子。
5
this
sentence
has
$
letters
this sentence has thirtyone letters
7
$
is
the
number
of
letters
here
thirty is the number of letters here
5
the
letters
are
$
potato
the letters are twentynine potato
提示
【样例 2 解释】
$
填入表示整数 的单词 thirty
,此时所有单词的字母总数为 。
【样例 3 解释】
请注意本题中的句子可能并不满足英语语法要求。
【数据范围与限制】
本题开启捆绑测试。各个子任务的分值和特殊限制如下所述:
- Subtask 1(40 pts):
$
中填入的单词所对应的数字不超过 。 - Subtask 2(60 pts):无特殊限制。
对于所有数据,,$
中填入的单词所对应的数字不超过 。
【题目来源】
本题来源自 COCI 2013-2014 CONTEST 3 T3 REČENICE,按照原题数据配置,满分 分。
由 Eason_AC 翻译整理提供。