首页 > 试题广场 >

整数转罗马数字

[编程题]整数转罗马数字
  • 热度指数:457 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个正整数 n ,请你把这个数字转成罗马数字。罗马数字包含七种字符:'I' ,'V' ,'X' ,'L' ,'C' ,'D' ,'M' 分别表示 1 ,5,10,50,100,500,1000。
罗马数字记数的方法:
(1)相同的数字连写,所表示的数等于这些数字相加得到的数,如, Ⅲ = 3;
(2)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如,Ⅷ = 8,Ⅻ = 12;
(3)小的数字在大的数字的左边,所表示的数等于大数减小数得到的数,如,Ⅳ = 4,Ⅸ = 9 。这个规则只适用于六个情况 I 可以放到 V 和 X 左边,X 可以放到 L 和 C 左边,C 可以放到 D 和 M 的左边

数据范围:
示例1

输入

5

输出

"V"
示例2

输入

6

输出

"VI"
public String ArabicToRoman (int n) {
        // write code here
        int[] nums = new int[]{1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String[] strs = new String[]{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        StringBuilder sb = new StringBuilder("");
        int i=0;
        while(n!=0){
            while(i<nums.length && n<nums[i]){
                i++;
            }
            sb.append(strs[i]);
            n-=nums[i];
        }
        return sb.toString();
    }

发表于 2022-12-04 17:05:09 回复(0)

问题信息

难度:
1条回答 3854浏览

热门推荐

通过挑战的用户

查看代码
整数转罗马数字