#第一次發文,有誤敬請指教
def roman_to_int(s: str): #羅馬轉數字(int)
num_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} #定義字典
values = [num_map[i] for i in s] #羅馬轉數字(list),例如"XIV"會轉成[10, 1, 5]
total = 0 #結果數值
prev = 0 #前一次的暫存數值,計算用
for val in reversed(values): #reversed()是指從右到左,符合羅馬數字規則習慣
if val < prev: #如果該項數值小於前一項(prev初始為零)
total -= val #就前面減後面,如IV即是5-1=4
else:
total += val #反之相加,如VI即是5+1=6
prev = val #更新prev
return total #回傳結果
def int_to_roman(n: int): #數字轉羅馬
if n == 0: #結果為零的特例
return 'ZERO'
val_map = [
(1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'),
(100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'),
(10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')
] #定義轉換表
result = ""
for value, symbol in val_map: #依序從表中取數值與符號,重複操作
while n >= value: #如果數字大於數值
result += symbol #就插入該符號
n -= value #然後數字減掉該數值
return result #回傳結果
#主程式
ques = [] #紀錄題目清單
while True: #重複輸入
line = input()
if line == '#': #如果輸入為#就跳出
break
ques.append(line) #新增到清單
for line in ques: #依序處理清單
a_str, b_str = line.split(' ') #用空格分割字串
#轉換成數字
a_val = roman_to_int(a_str)
b_val = roman_to_int(b_str)
diff = abs(a_val - b_val) #計算絕對值
print(int_to_roman(diff)) #輸出羅馬數字