#46692: Python 解法


dreamcard0126@gmail.com (周成澤)

學校 : 不指定學校
編號 : 311760
來源 : [123.195.46.13]
最後登入時間 :
2025-07-10 00:07:23

anyway 就是羅馬文字->數字計算->轉回羅馬文字 

遇到IV IX 這種的 就是判斷後者比前者大 就變成相減 不然就是相加

轉回羅馬字我是暴力解 ORZ 

 

def str_to_num(str1):
    dict1={"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
    i = 0
    sum1=0
    while i <len(str1):
        if  len(str1)==1:
            sum1=dict1[str1[i]]
            return sum1
        elif i+1<len(str1) and dict1[str1[i]]<dict1[str1[i+1]] :
             sum1+=dict1[str1[i+1]]-dict1[str1[i]]
             i+=2
        else:
             sum1+=dict1[str1[i]]
             i+=1
    return sum1

def num_to_str(n):
    roman_list = [
    ("M", 1000), ("CM", 900), ("D", 500), ("CD", 400),
    ("C", 100), ("XC", 90), ("L", 50), ("XL", 40),
    ("X", 10), ("IX", 9), ("V", 5), ("IV", 4), ("I", 1)
]
    if n==0:
        return "ZERO"
    result=""
    for str1 ,num in roman_list:
        while n>=num:
            result+=str1
            n-=num
    return result

while True:
    line = input().strip()
    if line == "#":
        break  # 遇到 # 就結束
    inputstr1 = line.split()
    
    first_str = list(inputstr1[0])
    second_str = list(inputstr1[1])
    
    first_sum = str_to_num(first_str)
    second_sum = str_to_num(second_str)
    
    total = abs(first_sum - second_sum)
    print(num_to_str(total))