简介
如今世界大多数人使用阿拉伯数字 0 至 9;如果回到两千年前,大多数欧洲人使用的则是罗马数字。
罗马数字使用以下拉丁字母,各有固定数值:
| M | D | C | L | X | V | I |
|---|---|---|---|---|---|---|
| 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
罗马数字由这些字母组成,通常将其数值相加。例如 XVIII 表示 18,即 10 + 5 + 1 + 1 + 1。
还有一条重要规则:相同字母不能连续超过三次。因此不能用看似自然的 IIII 表示 4,而应使用减法,把它看作 5 - 1,并把小数写在前面。只有以下情况采用这种形式:4 为 IV,9 为 IX,40 为 XL,90 为 XC,400 为 CD,900 为 CM。
顺序非常重要!字母及上述减法组合,必须从左到右按数值递减排列。
例如:
105 => CV
---- => --
100 => C
+ 5 => V
106 => CVI
---- => --
100 => C
+ 5 => V
+ 1 => I
104 => CIV
---- => ---
100 => C
+ 4 => IV
最后再看一个较复杂的示例:
1996 => MCMXCVI
----- => -------
1000 => M
+ 900 => CM
+ 90 => XC
+ 5 => V
+ 1 => I
任务说明
将阿拉伯数字转换为罗马数字。
本练习只处理传统形式,最大为 MMMCMXCIX,即 3999。
建议 转换方法有很多。可先采用直观方法熟悉罗马数字,再查找更高效的实现。
原课程还提供不同解法的深入讨论;完成基础实现后,可以继续比较不同转换策略。