题目
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
示例 1:
输入: 3
输出: "III"
示例 2:
输入: 4
输出: "IV"
示例 3:
输入: 9
输出: "IX"
示例 4:
输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
示例 5:
输入: 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
源码
string intToRoman(int num) {
map<int,string> mmp={
{ 1, "I" },
{ 2, "II" },
{ 3, "III" },
{ 4, "IV" },
{ 5, "V" },
{ 6, "VI" },
{ 7, "VII" },
{ 8, "VIII" },
{ 9, "IX" },
{ 10, "X" },
{ 20, "XX" },
{ 30, "XXX" },
{ 40, "XL" },
{ 50, "L" },
{ 60, "LX" },
{ 70, "LXX" },
{ 80, "LXXX" },
{ 90, "XC" },
{ 100, "C" },
{ 200, "CC" },
{ 300, "CCC" },
{ 400, "CD" },
{ 500, "D" },
{ 600, "DC" },
{ 700, "DCC" },
{ 800, "DCCC" },
{ 900, "CM" },
{ 1000, "M" },
{ 2000, "MM" },
{ 3000, "MMM" },
};
string res;
int temp;
int beishu=10;
while(num>0){
temp = num % beishu;
num = num / beishu * beishu;
res = mmp[temp] + res;
beishu = beishu * 10;
}
return res;
}