假设我们有一个数字 num。我们必须将其转换为等效的罗马数字。罗马数字包含如下符号和值 -
“我”= 1
“V”= 5
“X”= 10
“L”= 50
“C”= 100
“D”= 500
“M” = 1000
这些符号通常按从大到小、从左到右的顺序书写,并且可以通过将所有符号的值相加来计算。但也有一些特殊情况,低值符号在高值符号的左边,表示高值减去低值。
这些是这种情况的例子 -
“I”在“V”之前,值为 4。
“I”在“X”之前,值为 9。
“X”在“L”之前,值为 40。
“X”在“C”之前,值为 90。
“C”在“D”之前,值为 400。
“C”在“M”之前,值为 900。
在罗马数字中也有一些规则 -
没有符号重复超过 3 次。
符号“V”、“L”和“D”不再重复。
因此,如果输入像 n = 1520,那么输出将是“MDXX”,因为“MDXX”表示 1000 + 500 + 10 + 10 = 1520。
让我们看看以下实现以获得更好的理解 -
def solve(num): res = "" table = [ (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I"), ] for cap, roman in table: d, m = divmod(num, cap) res += roman * d num = m return res num = 1520 print(solve(num))
1520输出结果
MDXX