官方解法:https://leetcode-cn.com/problems/integer-to-roman/solution/zheng-shu-zhuan-luo-ma-shu-zi-by-leetcode/

    1. # 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
    2. #
    3. # 字符 数值
    4. # I 1
    5. # V 5
    6. # X 10
    7. # L 50
    8. # C 100
    9. # D 500
    10. # M 1000
    11. #
    12. # 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + I
    13. # I 。
    14. #
    15. # 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5
    16. # 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
    17. #
    18. #
    19. # I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
    20. # X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
    21. # C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
    22. #
    23. #
    24. # 给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
    25. #
    26. # 示例 1:
    27. #
    28. # 输入: 3
    29. # 输出: "III"
    30. #
    31. # 示例 2:
    32. #
    33. # 输入: 4
    34. # 输出: "IV"
    35. #
    36. # 示例 3:
    37. #
    38. # 输入: 9
    39. # 输出: "IX"
    40. #
    41. # 示例 4:
    42. #
    43. # 输入: 58
    44. # 输出: "LVIII"
    45. # 解释: L = 50, V = 5, III = 3.
    46. #
    47. #
    48. # 示例 5:
    49. #
    50. # 输入: 1994
    51. # 输出: "MCMXCIV"
    52. # 解释: M = 1000, CM = 900, XC = 90, IV = 4.
    53. # Related Topics 数学 字符串
    54. # 👍 388 👎 0
    55. # leetcode submit region begin(Prohibit modification and deletion)
    56. class Solution(object):
    57. def intToRoman(self, num):
    58. """
    59. :type num: int
    60. :rtype: str
    61. """
    62. digits = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"),
    63. (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
    64. roman_digits = []
    65. for value, symbol in digits:
    66. if num == 0: break
    67. count, num = divmod(num, value)
    68. roman_digits.append(count * symbol)
    69. return ''.join(roman_digits)
    70. # leetcode submit region end(Prohibit modification and deletion)
    71. s = Solution()
    72. print(s.intToRoman(100))