int indexOf(char ROMAN[7], char c){
for(int i = 0; i < 7; i++){
if(ROMAN[i] == c)
return i;
}
return 0;
}
string intToRoman(int num) {
// M:1000 D:500 C:100
// L:50 X:10 V:5 I:1
char ROMAN [7] = {'M', 'D', 'C', 'L','X', 'V', 'I'};
int DEC [7] = {1000, 500, 100, 50, 10, 5, 1};
string temp = "", result="";
int n = 0;
for(int i = 0; i < 7; i++){
n = num / DEC[i];
if(n != 0){
string tmp (n,ROMAN[i]);
temp += tmp;
num -= DEC[i] * n;
}
}
n = temp.length();
for(int i = 0; i < temp.length();){
if(i+4 < n && temp[i] == 'D' && temp[i+4] == 'C'){
result += "CM";
i += 5;
}
else if(i+4 < n && temp[i] == 'L' && temp[i+4] == 'X'){
result += "XC";
i += 5;
}
else if(i+4 < n && temp[i] == 'V' && temp[i+4] == 'I'){
result += "IX";
i += 5;
}
else if(i+3 < n && temp[i] == temp[i+3]){
result += temp[i];
result += ROMAN[indexOf(ROMAN, temp[i])-1];
i += 4;
}
else{
result += temp[i++];
}
}
return result;
}