回分類題庫
d049: 羅馬數字
出處:

Difficulity : 1
Accepted : 155 Times | Submit :284 Times | Clicks : 4224
Accepted : 122 Users | Submit : 136 Users | Accepted rate : 90%
Time Limit :2001 ms | Memory Limit : 32001 KBytes
題目加入時間 : 2008-10-21 16:58

Content :

傳統的阿拉伯數字,不同的數字會因其所在的位數而有不同的意義,像是 123 的 1 是代表一百,而 321 的 1 是代表 1,所以阿拉伯數字所代表的數字不是單純各個位數相加,必須考慮到位數。

羅馬數字則不同,是由 I, V, X, L, C, D, M 所組成的。其中 I 代表 1 、 V 代表 5 、 X 代表 10 、 L 代表 50 、 C 代表 100、 D 代表 500 而 M 代表 1000 ,書寫的時候由左往右,先寫代表數字較多的字母。所代表的數字,可將其所有羅馬數字所代表的數字相加而得,例如:XVI = 10 + 5 + 1 = 16。另外羅馬數字還提供了減法原則,如果寫 XIV ,所代表的意義是 10 + 5 - 1 = 14。不能與自己相差 10 倍以上的數字組合使用,例如用 IC 代表 99 是不允許的。

試撰寫一程式,將輸入的10進位數字轉換成羅馬數字。

Input :

輸入為多行,每行包含一小於四千的正整數 n 。

Output :

針對每個輸入 n,輸出一行其羅馬數字表示法。

Sample Input :

3999
3888

Sample Output :

MMMCMXCIX
MMMDCCCLXXXVIII

Hint :

printf("%s%s%s%s\n", d4[input/1000], d3[(input/100)%10], 
                     d2[(input/10)%10], d1[input%10]);

Author :

(管理員:yuhanlyu)

  Solve it!   Status Forum (3)

C++
C
JAVA
7109. derching (54 ms , 203KB)
40307. staycalm (69 ms , 220KB)
20630. liouzhou_101 (70 ms , 229KB)
38715. johnny (76 ms , 208KB)
24625. nthuskate (77 ms , 226KB)
1816. yuhanlyu (36 ms , 297KB)
1815. yuhanlyu (36 ms , 299KB)
53940. ag100 (52 ms , 207KB)
7110. derching (52 ms , 202KB)
8455. ww2308 (57 ms , 225KB)
75950. ag100j (387 ms , 10708KB)
58547. nwgs524513cja ( 1 s , 22495KB)
58416. nwgs524513cja ( 1.2 s , 24636KB)
49483. nwgs524513cja ( 1.4 s , 21182KB)
50325. nwgs524513cja ( 1.4 s , 22381KB)

執行時間會受很多因素影響因此僅供參考,主機等級請看這裡