Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
string intToRoman(int num) {
map<int, string> roman;
roman[1] = "I";
roman[4] = "IV";
roman[5] = "V";
roman[9] = "IX";
roman[10] = "X";
roman[40] = "XL";
roman[50] = "L";
roman[90] = "XC";
roman[100] = "C";
roman[400] = "CD";
roman[500] = "D";
roman[900] = "CM";
roman[1000] = "M";
int number[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
std::vector<int> v(number, number+13);
int cur = v.size()-1;
//找到第一个比num大的数,
for (int i=0; i<v.size(); i++) {
if (v[i] > num) {
cur = i-1;
break;
}
}
string rStr;
while (num) {
int cnt = num / v[cur];
//cout << cnt << " " << v[cur] << endl;
num = num % v[cur];
for (int i=0; i<cnt; i++)
rStr.append(roman[v[cur]]);
cur--;
}
return rStr;
}
};