题解 | #数字变成罗马数字#
数字变成罗马数字
http://www.nowcoder.com/practice/0636c3db0de6437a8a86e58f46aa5c90
解题方法:
首先要明确罗马数字的表示方法
所以根据以上规则,要先把特殊的和基本的表示出来,也就是
表示完之后就看那个输入的数字在哪个范围内即可。以1994为例,步骤如下:
将给定数字按顺序依次除以1000、900、500、400、100、90、50、40、10、9、5、4、1,只要商大于0,就表示给定数字大于除数,然后找到除数对应的罗马数字,1994的第一个是1000,对应的是M;
原数减去除数,将新数再次进行上面的操作,这时的除法就会从上一步的除数的下一个数开始。1994-1000=994,994找到的除数是900,对应的是CM;
之后重复操作,994-900=94,94从500开始,商小于0就直接跳过进行下一个数,于是找到90,对应的是XC;
94-90=4,从50开始,直到4,对应的是IV;
4-4=0,结束。
最后输出MCMXCIV。
代码如下:
class Solution { public: /** * * @param num int整型 * @return string字符串 */ string intToRoman(int num) { // write code here int values[]={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; for(int i=0;i<13;i++) { while(num/values[i]) { Roman+=str[i]; num-=values[i]; } } return Roman; } };
牛客刷题记录 文章被收录于专栏
记录自己的刷题记录,刷过的题的解法