罗马数——>整数
inline int number(const char &i) { switch (i) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } int romanToInt(string s) { if(s.size()==1) return number(s[0]); int result; result+=number(s[0]); for(size_t i=1;i<s.size();++i) { if (number(s[i])>number(s[i - 1])) result += number(s[i]) - 2*number(s[i - 1]); else result += number(s[i]); } return result; }
整数——>罗马数
string intToRoman(int num) { int number[]={1000,900,500,400,100,90,50,40,10,9,5,4,1}; string roman[]={"M", "CM", "D", "CD", "C", "XC","L", "XL", "X", "IX", "V", "IV", "I"}; string result; for(int i=0;num>0;i++) { int j=num/number[i]; num%=number[i]; while(j>0) { result+=roman[i]; --j; } } return result; }