Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
解题思路:罗马数字就有下面七个基本符号:Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000)
罗马数字与十进位数字的意义不同,它没有表示零的数字,与进位制无关。用罗马数字表示数的基本方法一般是把若干个罗马数字写成一列,它表示的数等于各个数字所表示的数相加的和。当符号Ⅰ、Ⅹ或C位于大数的后面时就作为加数;位于大数的前面就作为减数。所以要考虑900,400,90,40,9,4 表示
class Solution
{
public:
string intToRoman(int num)
{
int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; //注意是int values[],而不是int [] values!!!
string roman[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
string ans = "";
for(int i = 0 ; i < 13; i++)
while(num >= values[i]){
ans+=roman[i];
num-=values[i];
}
return ans;
}
};