Problem:
思路:
题目只要求讨论1-3999,所以直接穷举各种情况吧,从千位,百位,十位到个位。
Solution:
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 26 11:36:04 2017
@author: liangsht
"""
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
l = ""
tmp1 = num / 1000
if tmp1 != 0:
l = l + 'M'*tmp1
newnum = num - tmp1 * 1000
tmp2 = newnum / 100
if tmp2 == 9:
l = l + "CM"
elif tmp2 >= 5:
l = l + 'D' + 'C'*(tmp2-5)
elif tmp2 == 4:
l = l + "CD"
elif tmp2 >= 1:
l = l + 'C'*tmp2
newnum = newnum - tmp2 * 100
tmp3 = newnum / 10
if tmp3 == 9:
l = l + "XC"
elif tmp3 >= 5:
l = l + 'L' + 'X'*(tmp3-5)
elif tmp3 == 4:
l = l + "XL"
elif tmp3 >= 1:
l = l + 'X'*tmp3
newnum = newnum - tmp3 * 10
tmp4 = newnum
if tmp4 == 9:
l = l + "IX"
elif tmp4 >= 5:
l = l + 'V' + 'I'*(tmp4-5)
elif tmp4 == 4:
l = l + "IV"
elif tmp4 >= 1:
l = l + 'I'*tmp4
return l