您的位置:首页 > 其它

12. Integer to Roman

2017-08-24 20:52 232 查看
Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

给定一个整数,将它转换成一个罗马数字。

输入是保证在范围从1到3999。

罗马数字转换成整数:

首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。

在构成数字的时候,有下列规则:

1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;

2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;

3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;

5、正常使用时,连写的数字重复不得超过三次。

代码:

string intToRoman(int num) {
int base[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
string  str[] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
"V", "IV", "I" };
string roman = "";
int number = num;
int i = 0;
while (number > 0) {
cout << "i:" <<i<< endl;
cout << "string: " << roman << endl;
if (number >= base[i]) {
number -= base[i];
roman += str[i];
}
else
i++;
}
return roman;
}


参考:

1. 罗马数字和整数相互转换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: