1. 程式人生 > >f. 羅馬數字

f. 羅馬數字

f: 羅馬數字

Time Limit: 1 Sec  Memory Limit: 128 MB

Description

 羅馬數字共有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的羅馬數字。