ローマ12.整数[M]ローマ数字整数

タイトル

整数を考えると、ローマ数字に変換します。入力は1から3999までの範囲内にあることが保証されています。


考え

考慮ローマ数字整数との変換関係:
Symol |値
: - :| - :
I | 1。
V | 5。
X- | 10
L | 50
C | 100
D | 500
M | 1000の
ローマ数字は、一般に、左下降に追従数値の表現に加算され、文字の右に順に配置されました。しかし、整数、注意4ローマ数字ではないIIII、しかしIVデジタルように、まだ9,40などが挙げられます。その後、ローマ数字と整数変換テーブルを確立するために、再考:
Symol |値
: - :| - :
。I | 1
。IV | 4
。V | 5
。IX | 9
X- | 10
XL | 40
L | 50
XC | 90
C | 100
CD | 400
D | 500
CM | 900
M | 1000年
、すべての場合においてシンボルを含む、NUMテーブルに番号を見つけます:

  1. 数xを見つけるために、テーブルに値がNUMよりも大きくありません
  2. 対応する出力に応じて記号文字、およびNUM-X
  3. 2 NUM 0までループ動作を行います

C ++

 string intToRoman(int num) {
        string resStr = "";
        vector<int> value{1000,900,500,400,100,90,50,40,10,9,5,4,1};
        vector<string> symbol{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        for(int i=0;i<value.size();i++)
            while(num>=value[i])
            {
                resStr+=symbol[i];
                num-=value[i];
            }
        return resStr;
    }

パイソン

 def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        """
        intList = [1000,900,500,400,100,90,50,40,10,9,5,4,1]
        strList = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']
        resStr = ''
        i = 0
        count = 0
        while num > 0:
            count = num/intList[i]
            num %= intList[i]
            while count > 0:
                resStr += strList[i]
                count -= 1
            i += 1
        return resStr

おすすめ

転載: www.cnblogs.com/Jessey-Ge/p/10993462.html