Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
羅馬數(shù)字的表示:
I - 1
V - 5
X - 10
L - 50
C - 100
D - 500
M - 1000
羅馬數(shù)字采用七個羅馬字母作數(shù)字大溜、即Ⅰ(1)、X(10)翠语、C(100)件相、M(1000)再扭、V(5)、L(50)夜矗、D(500)泛范。記數(shù)的方法:
- 相同的數(shù)字連寫,所表示的數(shù)等于這些數(shù)字相加得到的數(shù)紊撕,如 Ⅲ=3罢荡;
- 小的數(shù)字在大的數(shù)字的右邊,所表示的數(shù)等于這些數(shù)字相加得到的數(shù)对扶,如 Ⅷ=8区赵、Ⅻ=12;
- 小的數(shù)字(限于 Ⅰ辩稽、X 和 C)在大的數(shù)字的左邊惧笛,所表示的數(shù)等于大數(shù)減小數(shù)得到的數(shù)从媚,如 Ⅳ=4逞泄、Ⅸ=9;
思路:
- 題目要求最大輸入值是3999拜效,首先要得到羅馬字母千位喷众,百位,十位紧憾,個位的各個表達到千,然后用/和%號得到各位數(shù)的值,比如幾個千位赴穗,幾個百位憔四,幾個十位和幾個個位膀息。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
roman = [["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"],
["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"], ["", "M", "MM", "MMM"]]
res = []
res.append(roman[3][num / 1000 % 10])
res.append(roman[2][num / 100 % 10])
res.append(roman[1][num / 10 % 10])
res.append(roman[0][num % 10])
return "".join(res)
if __name__ == '__main__':
sol = Solution()
num = 3999
print sol.intToRoman(num)
print sol.intToRoman(1980)