内容 :
如果生活在數世紀之前的古羅馬,你應該用過 V 來表示五。V 和 5 這兩個符號都可以用來表示數目五。用來表示數目的符號稱作數字。而羅馬人用來表示數目的符號就是羅馬數字。以下是七個基本的羅馬數字︰
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
所有其他的數目都是由這些數字組合而成。數目都是由左寫到右,通常值是等於組成的羅馬數字加起來。
例如十七可以表示為
X+V+I+I=XVII
10+5+1+1=17
表示羅馬數字可以使用減法來取代加法的規則。例如四可以不用四個一相加來表示 IIII,而採用五減一來表示 IV。利用這類規則,羅馬人能夠減化許多數目的表示方式,例如 IX 取代 VIIII 表示 9,及 CD 取代 CCCC 表示 400。
今日我們並不確定羅馬符號的起源為何。例如符號 V 的起源主要有兩個理論。有些學者認為五最早是用握拳、拇指在外的手勢來表示。最後以象形文字書寫而簡化為 V。
另一個理論認為 X 源自在 10 條線加上交叉線

羅馬數字可以很容易地用來相加或相減,但算起乘除法就相當不順手。這就是為什麼現在羅馬數字並不常用的原因了。
問題
然而,羅馬數字還是經常用於書本章節及頁碼的編號。在這一題工作是讀入兩個正整數,然後輸出兩個數字差的絕對值。所有的數字都必須以羅馬數字來表示。而連續四個相同符號出現時,必須用減法規則來化簡之。
输入说明 :
每個輸入檔中會有一個或以上的測試資料。每一行由兩個數字組成一筆測試資料,且所有數字將會小於4,000。檔案最後會以符號 # 表示結束。输出说明 :
每筆測試資料的答案必須輸出到檔案中,並且換行。如果答案為零,則須輸出字串 ZERO。Python:(这也是个逗,实在不懂罗马数字格式,只判断了一个数字)
while True :
a = input()
typelist = ['I' , 'V' , 'X' , 'L' , 'C' , 'D' , 'M']
typedic = {'I':1 , 'V':5 , 'X':10 , 'L':50 , 'C':100 , 'D':500 , 'M':1000}
nums = ''
numl = []
numn = 0
while a :
if ( a[0] == 'I' or
a[0] == 'V' or
a[0] == 'X' or
a[0] == 'L' or
a[0] == 'C' or
a[0] == 'D' or
a[0] == 'M' ) :
nums = nums +str(a[0])
else :
print('这不是罗马数字哦')
break
a = a[1:]
else :
for x in nums :
for y in range(7) :
if x == typelist[y] :
numl.append(y)
break
numl = numl[::-1]
print(numl)
time = numl[0]
for x in range(len(numl)) :
if typelist[time] == typelist[numl[x]] :
numn += typedic[typelist[numl[x]]]
elif typelist[time] < typelist[numl[x]] :
numn += typedic[typelist[numl[x]]]
time += 1
elif typelist[time] > typelist[numl[x]] :
numn -= typedic[typelist[numl[x]]]
print(numn)