计蒜客 挑战难题 整数转换成罗马数字

给定一个整数num,( 1<=num<=3999),将整数转换成罗马数字。

如1,2,3,4,5对应的罗马数字分别位I,II,III,IV,V等。

格式:

第一行输入一个整数,接下来输出对应的罗马数字。

提示:

罗马数字的常识见此链接,对做题有帮助哦~尤其是表示方法。

http://baike.baidu.com/link?url=injU8M4bAoc2zRZQ1GtgrfvuzCJO9PLnq6fpQGJLenakbzo-rS8p-qsYHR_81-aN

样例输入

123

样例输出

CXXIII

========================================第一次code:
 1 import java.util.Scanner;
 2 public class Main
 3 {
 4     public static void main(String[] args)
 5     {
 6         Scanner input = new Scanner(System.in);
 7         System.out.println(run(input.nextInt()));
 8     }
 9     public static String run(int n)
10     {
11         String a="",b="",c="",d="",e="";
12         /**
13          * 轉化千位數
14          */
15         if((n/1000)%10 > 0)
16         {
17             for(int i=0;i<(n/1000)%10;i++)
18             {
19                 d +="M";
20             }
21         }
22         /**
23          * 轉換百位數
24          */
25         if((n/100)%10 > 0)
26         {
27             switch((n/100)%10)
28             {
29                 case 1: c="C";break;
30                 case 2: c="CC";break;
31                 case 3: c="CCC";break;
32                 case 4: c="CD";break;
33                 case 5: c="D";break;
34                 case 6: c="DC";break;
35                 case 7: c="DCC";break;
36                 case 8: c="DCCC";break;
37                 case 9: c="CM";break;
38             }
39         }
40         /**
41          * 轉化十位數
42          */
43         if((n/10)%10 > 0)
44         {
45             switch((n/10)%10)
46             {
47                 case 1: b="X";break;
48                 case 2: b="XX";break;
49                 case 3: b="XXX";break;
50                 case 4: b="XL";break;
51                 case 5: b="L";break;
52                 case 6: b="LX";break;
53                 case 7: b="LXX";break;
54                 case 8: b="LXXX";break;
55                 case 9: b="XC";break;
56             }
57         }
58         /**
59          * 轉換個位數
60          */
61         if(n%10 > 0)
62         {
63             switch(n%10)
64             {
65                 case 1: a="I";break;
66                 case 2: a="II";break;
67                 case 3: a="III";break;
68                 case 4: a="IV";break;
69                 case 5: a="V";break;
70                 case 6: a="VI";break;
71                 case 7: a="VII";break;
72                 case 8: a="VIII";break;
73                 case 9: a="IX";break;
74             }
75         }
76         e =  d + c + b + a;
77         return e;
78     }
79 }


时间效率: 43毫秒

时间: 2024-12-28 12:22:27

计蒜客 挑战难题 整数转换成罗马数字的相关文章

计蒜客 挑战难题 移除数组中的重复元素

给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度. 例如: 数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2} 要求: 不能新开数组分配额外的空间.即常数空间限制. 提示: 输入一个整数n,以及其对应的数组A[n],输出新数组长度 样例输入 5 0 0 1 1 2 样例输出 3 =========================第一次code: 1 import java.util.ArrayList; 2 import java.util.List; 3 i

计蒜客 挑战难题 寻找插入位置

给定一个已经升序排好序的数组,以及一个数 targettargettarget,如果 targettargettarget 在数组中,返回它在数组中的位置. 否则,返回 targettargettarget 插入数组后它应该在的位置. 假设数组中没有重复的数.以下是简单的示例: [1,3,5,6], 5 → 2 [1,3,5,6], 2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6], 0 → 0 输入格式 第一行输入一个整数 nnn. 第二行输入 nnn 个整数,表示数组A[n]

计蒜客 挑战难题 爬楼梯

假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输出你的方法总数. 样例输入 5 样例输出 8==========================第一次code: 1 import java.util.Scanner; 2 3 public class Main 4 { 5 public static void main(String[] args) 6 { 7 Scanner

计蒜客 挑战难题 元素移除

给定一个数组和一个数(该数不一定在数组中),从数组里删掉这个数字,返回剩下的数组长度. 如:A[] = {1, 2, 3, 4, 5}, 要删除数字3, 那么返回数组长度为4. 亲爱的小伙伴们,题目是不是很简单呢? 提示: int removeElement(int A[], int n, int elem) 其中,n代表数组长度,elem代表要删掉的元素. 格式: 输入一个数n,继而输入一个数组A[n],接着输入要删除的元素elem,返回剩余数组长度index. ===============

第13题:整数转换成罗马数字&amp;第14题:罗马数字转换成整数

写在前面: 这两道题合起来写吧,其实整数转罗马数字我前天就写完了,当我想写罗马数转整数的时候竟然脑子一片空白,想了几分钟就想起来Map,本着学习的目的最终还是不想用Map,坚持C语言,今天脑子里直接涌出了Switch方式转换,看来"蹲在马桶上编程"的方式还是蛮不错的o(^▽^)o 整数转罗马数字:主要建立对应关系,输出时有点像百钱百鸡 罗马数字转整数:输入罗马数字(其实就是字符数组)后,for循环遍历,找出对应,这个再看不懂的建议去看看罗马数字表示方法. 第13题:整数转换成罗马数字

整数转换成罗马数字

编写一个将整数n(1 <= n <= 9999)转换成罗马数字. 整数n(1<=n<=9999)与罗马数字表示有以下对应关系 1000 - m,有几个1000就有几个m对应 900 - 两个字符cm 500 - 一个字符d 400 - 两个字符cd 100 - 一个字符c,有几个100就用几个c表示 90 - 两个字符xc 50 - 一个字符l 40 - 两个字符xl 10 - 一个字符x,有一个10就用几个x 9 - 用两个字符ix表示 5 - 用一个字符v来表示 4 - 用两个

计蒜客 作弊揭发者(string的应用)

鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库确认车辆,进行扣费. 斗智斗勇的好戏一般从此处展开… 一些车主通过在停车时遮挡车牌上的一个或多个数字.字母序列,来阻碍识别系统的识别工作,以此逃避停车费用的缴纳. 车主这简直是用轻轻的一挡搞出来一个世界难题有木有?!管理是一方面,技术解决才是王道啊. 这么难的项目不得不交给计蒜客实验室了.D 神负责

计蒜客 无脑博士和他的试管们

无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了.当然每一次灌注都是完全的.由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失. 写一个程序去帮助无脑博士找出当A是个是空的时候,C试管中硫酸铜溶液所剩量的所有可能性. 输入包括一行,为空格分隔开的三个数,分别为整数A,B和C. 输出包括一行,升序地列出当A试管是空的时

计蒜客普及组模拟赛

今天没事闲的看到计蒜客有个普及组模拟赛,就当练了练手去打了,成绩低的可怜...400分崩成280分AK梦想化作泡影 第一题 同学的爱好 链接:https://nanti.jisuanke.com/t/17291 小学应用题难度?大概画个图就能懂,把每个部分都标上号,算出a,b,c,d,e,f的部分,进行运算就行了. 不多解释了,直接上代码 #include<iostream> #include<cstdio> #include<algorithm> #include&l