码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-08-26 13:31:36      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

给定一个整数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毫秒

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

标签:

原文地址:http://www.cnblogs.com/enginehome/p/5809845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!