fork download
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class Ideone
  5. {
  6. /**
  7. Convert decimal number lying between 1-3999 to roman numerals
  8.  
  9. SYMBOL VALUE
  10. I 1
  11. II 2
  12. III 3
  13. IV 4
  14. V 5
  15. X 10
  16. L 50
  17. C 100
  18. D 500
  19. M 1000
  20.  
  21. 299 - CCXCIX
  22.  
  23.  
  24. **/
  25. private static String roman(int n) {
  26. HashMap<Integer, String> mp = new HashMap<>();
  27. mp.put(1, "I");
  28. mp.put(2, "II");
  29. mp.put(3, "III");
  30. mp.put(4, "IV");
  31. mp.put(5, "V");
  32. mp.put(9, "IX");
  33. mp.put(10, "X");
  34. mp.put(40, "XL");
  35. mp.put(50, "L");
  36. mp.put(90, "XC");
  37. mp.put(100, "C");
  38. mp.put(400, "CD");
  39. mp.put(500, "D");
  40. mp.put(900, "CM");
  41. mp.put(1000, "M");
  42.  
  43. int[] val = new int[]{1000,900, 500,400, 100,90, 50,40, 10,9 , 5, 4, 3, 2, 1};
  44.  
  45. StringBuilder sb = new StringBuilder();
  46. for(int i=0;i<val.length;i++) {
  47. while(n>=val[i]) {
  48. n-=val[i];
  49. sb.append(mp.get(val[i]));
  50. }
  51. }
  52.  
  53. return sb.toString();
  54. }
  55.  
  56. public static void main(String[] args) throws java.lang.Exception
  57. {
  58. Scanner in = new Scanner(System.in);
  59. int n = in.nextInt();
  60. System.out.println(roman(n));
  61. }
  62. }
Success #stdin #stdout 0.14s 54600KB
stdin
989
stdout
CMLXXXIX