niithub

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

 

=============================

第二次code:

 1 import java.util.Scanner;
 2 
 3 public class Main
 4 { 
 5     public static void main(String[] args) 
 6     { 
 7         Scanner input = new Scanner(System.in);
 8         System.out.println(run(input.nextInt()));
 9     }
10     public static String run(int n)
11     {
12         String e="",d="",c="",b="",a="";
13         String [] aa = {"I","II","III","IV","V","VI","VII","VIII","IX"};  //个位替换
14         String [] bb = {"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};  //十位替换
15         String [] cc = {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};  //百位替换
16         String [] dd = {"M","MM","MMM"};                                  //千位替换
17         /**
18          * 轉化千位數
19          */
20         if((n/1000)%10 > 0)
21         {
22             d = dd[(n/1000)%10 - 1];
23         }
24         /**
25          * 轉換百位數
26          */
27         if((n/100)%10 > 0)
28         {
29             c = cc[(n/100)%10 - 1];
30         }
31         /**
32          * 轉化十位數
33          */
34         if((n/10)%10 > 0)
35         {
36             b = bb[(n/10)%10 - 1];
37         }
38         /**
39          * 轉換個位數
40          */
41         if(n%10 > 0)
42         {
43             a = aa[n%10 - 1];
44         }
45         e =  d + c + b + a;
46         return e;
47     }
48 }

时间效率:35毫秒。

posted on 2016-08-26 12:02  niithub  阅读(195)  评论(0编辑  收藏  举报