f. 羅馬數字
阿新 • • 發佈:2018-12-09
f: 羅馬數字
Time Limit: 1 Sec Memory Limit: 128 MBDescription
羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的規則可以表示任意正整數。需要注意的是羅馬數字中沒有“0”,與進位制無關。一般認為羅馬數字只用來記數,而不作演算。
1.重複數次:一個羅馬數字重複幾次,就表示這個數的幾倍。
2.右加左減:
在較大的羅馬數字的右邊記上較小的羅馬數字,表示大數字加小數字。
在較大的羅馬數字的左邊記上較小的羅馬數字,表示大數字減小數字。
左減的數字有限制,僅限於I、X、C。比如45不可以寫成VL,只能是XLV
但是,左減時不可跨越一個位值。比如,99不可以用IC(100-1)表示,而是用XCIX([100-10]+[10-1])表示。
左減數字必須為一位,比如8寫成VIII,而非IIX。
右加數字不可連續超過三位,比如14寫成XIV,而非XIIII。
現在有一些以大寫英文字母表示的羅馬數字,請你輸出它的十進位制表示。
Input
輸入有多行,每行一個字串,代表一個羅馬數字,其十進位制值不超過3333。
Output
對於每個羅馬數字,輸出對應的十進位制值。每行輸出一個數字。
Sample Input
XVIII XCIX MMMCCCXXXIII
Sample Output
18 99 3333
發現答案不超過3333,那我們就來模擬吧!從最高位開始分別模擬出千位、百位、十位、個位的羅馬數字然後把這個字串存到數組裡,每一個詢問都和存在數組裡的字串比較,如果是一樣的就輸出。這裡要注意4,9的羅馬數字。