2011年8月3日 星期三

11616 - Roman Numerals


The Problem

本題請你做羅馬數字與阿拉伯數字的轉換,羅馬數字以英文字母表示數目,其對應關係如下:

LetterIVXLCDM
Value1510501005001000

一般而言,羅馬數字是以字母所表示數目的大小,以遞減的方式由左至右寫出,並依序作加總。然而,有些數字的組合會導致需要做減法,如果一個表示較小值的字母在一個較大值字母的前面,則較小的值必須從較大值中減去,其結果再加到總合裡面。下列為適用減法規則的地方:
  • "I"出現在"V"或"X"的前面(例:IV=4)。
  • "X"出現在"L"或"C"的前面(例:XC=900)。
  • "C"出現在"D"或"M"的前面。
  • "V", "L", "D"後面必然接上一個較小值的字母,所以它們總是會加進總和裡面。
另外,"I", "X", "C", "M"不能連續出現超過三次,而"V", "L", "D"則不能連續出現超過一次。

羅馬數字不能表示零值,且若欲表示的值大於等於4000,則他們會在數字上劃一條橫線表示該數字必需乘上1000。

本題請你寫一個程式作羅馬數字與阿拉伯數字之間的轉換,注意,羅馬數字只會包含大寫字母。

The Input

輸入有多筆測試資料,每筆資料會有一個阿拉伯數字或是一個羅馬數字,其值為 n (0 < n < 4000)。

The Output

請在每一列輸出轉換結果。

Sample Input

XXV
4
942
MCMLXXXIII

Sample Output

25
IV
CMXLII
1983

原文出處

沒有留言:

張貼留言