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)) # 輸出結果