首页 > 代码库 > 计蒜客 挑战难题 整数转换成罗马数字

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

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

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