罗马表示整数

时间:2010-10-27 15:56:37

标签: java c++ python algorithm roman-numerals

  

可能重复:
  How do you find a roman numeral equivalent of an integer

我正在寻找一种简单的算法(最好是在Python中)。如何将给定的整数转换为罗马数?

string Roman(int Num){...}

例如,Roman(1981)必须制作“MCMLXXXI”。

5 个答案:

答案 0 :(得分:3)

我需要相反的一次(从罗马数字到int)。 Wikipedia提供了有关罗马数字如何工作的令人惊讶的详细信息。一旦你意识到事情是如此明确定义并且规范可以轻松实现,将其转换为代码是相当微不足道的。

答案 1 :(得分:1)

这是一个冗长的解释,如何使用附带的大量源代码:

http://www.faqs.org/docs/javap/c9/ex-9-3-answer.html

但我认为可以提高效率。

答案 2 :(得分:1)

查看此ActiveState link的代码。代码看起来很好。

答案 3 :(得分:1)

我想不出具有此功能的第三方库。有时候你必须自己写一些东西,尽管有很多关于如何在网上做这个的例子。这是RoseIndia

中的一个

答案 4 :(得分:0)

对于数百,数十和单位,规则几乎相同,即你有一个1,5和10个字符,每个字符的表示方式都相同,只是字母改变了。

您可以拥有一个包含10个条目的表格,表示模板 0 - 1 = U. 2 = UU 3 = UUU 4 = UF 5 = F. 6 = FU 7 = FUU 8 = FUUU 9 = UT

现在还有单位,数十和数百你的表: 单位= IVX 十分= XLC 数百= CDM

将数字模板应用于字母表示,以便U替换为第一个字符,F替换为秒,T替换为3。

每千人只有几千人。

从千位开始构建字符串,然后是数百种,然后是数十种,然后是单位。

如果你正在向后构建它,你当然可以从单位修改10开始,然后构建你的单位字符串,除以10并再次调整mod并转换到十字符串,重复数百个字符串,当你到达数字字符串,你会知道你的字符串只有一个字符即M。