• 12. Integer to Roman


    def solution(num):
        if(0<num<=5):
            if(num<4):
                return (num)*"I"
            else:
                return (5-num)*"I"+"V"
        elif(5<num<=10):
            return "V"+(num-5)*"I"
        elif(10<num<=50):
            left_10=num%10
            if(0<=left_10<=5):
                if(left_10<4):
                    return (num/10)*"X"+(left_10)*"I"
                else:
                    return (num/10)*"X"+(5-left_10)*"I"+"V"
            else:
                if(5<left_10<9):
                    return (num/10)*"X"+"V"+(left_10-5)*"I"
                else:
                    return (num/10)*"X"+(10-left_10)*"I"+"V"
        elif(50<num<=100):
            left_50=num%50
            if(10<left_50<=50):
                left_10=left_50%10
                if(0<=left_10<=5):
                    if(left_10<4):
                        return (num/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                    else:
                        return (num/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                else:
                    if(5<left_10<9):
                        return (num/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                    else:
                        return (num/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
        elif(100<num<=500):
            left_100=num%100
            if(50<left_100<=100):
                left_50=left_100%50
                if(10<left_50<=50):
                    left_10=left_50%10
                    if(0<=left_10<=5):
                        if(left_10<4):
                            return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                        else:
                            return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                    else:
                        if(5<left_10<9):
                            return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                        else:
                            return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
        elif(500<num<1000):
            left_500=num%50
            if(100<left_500<=500):
                left_100=left_500%100
                if(50<left_100<=100):
                    left_50=left_100%50
                    if(10<left_50<=50):
                        left_10=left_50%10
                        if(0<=left_10<=5):
                            if(left_10<4):
                                return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                            else:
                                return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                        else:
                            if(5<left_10<9):
                                return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                            else:
                                return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
        else:
            left_1000=num%1000
            if(500<left_1000<1000):
                left_500=left_1000%50
                if(100<left_500<=500):
                    left_100=left_500%100
                    if(50<left_100<=100):
                        left_50=left_100%50
                        if(10<left_50<=50):
                            left_10=left_50%10
                            if(0<=left_10<=5):
                                if(left_10<4):
                                    return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                                else:
                                    return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                            else:
                                if(5<left_10<9):
                                    return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                                else:
                                    return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
    
    print(solution(9))
  • 相关阅读:
    元组类型内置方法
    列表类型内置方法
    字符串类型内置方法
    转:【英语学习材料】
    转:【15年学不会英语的原因】
    转:【Java动态编程(Javassist研究)】
    转:【进制转换-概念】
    c语言学习笔记
    virtualbox虚拟机桥接方式网络设置
    navicat连接mysql8报错,错误提示为1251,原因及解决步骤
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10506635.html
Copyright © 2020-2023  润新知