12. Integretion to Roman
问题
罗马数字由七个不同的符号表示:I
、 V
、 X
、 L
、 C
、 D
和 M
。
例如,2用罗马数字写成II
,两个1相加。12被写成XII
,就是X + II
。27这个数字被写成XXVII
,也就是XX + V + II
。
罗马数字通常是从左到右由大到小书写的。然而,数字4不是IIII``。相反,数字4被写成IV
,因为1在5之前,我们减去它得到4。同样的原则也适用于数字9,即IX
。有六种情况下使用减法:
I
可以放在V
和X
前面,得到4和9。X
可以放在L
和C
前面,得到40和90。C
可以放在D
和M
之前,得到400和900。
给定一个整数,把它转换成罗马数字。输入保证在1到3999之间。
例子:
思路
首先,我们先不考虑6种减法特殊情况。不断进行一个高位(这里的位是指M
、D
、C
...)提取的操作 num / value
,然后找到对应的罗马字母就可以了。
对于那6种特殊情况的减法,如果剩余出来的模 num % value
恰好是其中一种,那么我们不再进行继续提取高位,直接用他们赋值就好了。
答案
最后更新于