1

可能重复:
你如何找到一个与整数等效的罗马数字

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

string Roman(int Num){...}

例如,Roman(1981) 必须生成“MCMLXXXI”。

4

5 回答 5

3

我需要相反的一次(从罗马数字到int)。 维基百科有关于罗马数字如何工作的令人惊讶的详细信息。一旦您意识到事情是这样定义明确的并且可以轻松获得规范,将其转换为代码就相当简单了。

于 2010-10-27T16:00:15.917 回答
1

这是一个冗长的解释如何使用附加的大量源代码来做到这一点:

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

但我认为它可以做得更有效率。

于 2010-10-27T15:59:53.753 回答
1

查看此ActiveState 链接上的代码。代码看起来相当有据可查。

于 2010-10-27T16:00:09.300 回答
1

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

于 2010-10-27T16:01:46.623 回答
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 替换为第三个字符。

千只是一千的M。

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

如果您要向后构建它,当然您可以从单位修改 10 开始,然后构建您的单位字符串,除以 10 并再次修改并转移到十位字符串,用数百个字符串重复,当您到达数千个字符串时你会知道你的字符串只有一个字符,即一个 M。

于 2010-10-27T16:14:25.347 回答