#51866: python


rumm2859@gmail.com (青)

學校 : 不指定學校
編號 : 315035
來源 : [182.235.133.50]
最後登入時間 :
2025-08-31 15:19:55

 

def roman_calc(s):
    # 羅馬數字 → 整數 的基本對照表
    log = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}

    # 這兩個表是用來把「整數 → 羅馬數字」
    val = [1000,900,500,400,100,90,50,40,10,9,5,4,1]
    sym = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]

 

     --- 把一個羅馬數字轉成整數 ---

    def to_int(r):
        num, i = 0, 0
        while i < len(r):  # 從左到右讀字母
            # 如果下一個比現在大,表示「減法規則」
            # 例如 IV = 5-1 = 4
            if i+1 < len(r) and log[r[i]] < log[r[i+1]]:
                num += log[r[i+1]] - log[r[i]]
                i += 2  # 跳過這兩個字母
            else:
                num += log[r[i]]  # 直接加起來
                i += 1
        return num

 

     --- 計算兩個羅馬數字的差 ---

    a, b = s.split()   # 輸入格式像 
    n = to_int(a) - to_int(b)
    if n == 0:
        return "ZERO"

 

     --- 把整數轉回標準羅馬數字 ---

    res = ""
    for v, x in zip(val, sym):   # 依序檢查 (1000, "M") (900, "CM") ...
        while n >= v:            # 一直減到比 v 小
            res += x             # 把對應的字母加上去
            n -= v
    return res


 ---------------- 主程式 ----------------

while True:
    s = input().strip() 
    if s == "#":         # 如果輸入「#」就結束
        break
    print(roman_calc(s)) # 輸出結果