藍橋杯 羅馬數字問題

2021-08-17 04:47:01 字數 1707 閱讀 2983

. 羅馬數字

【問題描述】

古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。

之所以這樣,不是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止在數字中出現0的概念!

羅馬數字的表示主要依賴以下幾個基本符號:

i –> 1

v –> 5

x –> 10

l –> 50

c –> 100

d –> 500

m –> 1000

這裡,我們只介紹一下1000以內的數字的表示法。

單個符號重複多少次,就表示多少倍。最多重複3次。

比如:ccc表示300 xx表示20,但150並不用lll表示,這個規則僅適用於i x c m。

如果相鄰級別的大單位在右,小單位在左,表示大單位中扣除小單位。

比如:ix表示9 iv表示4 xl表示40 

49 = xlix

更多的示例參見下表,你找到規律了嗎? 

i = 1 

ii = 2

iii = 3

iv = 4

v = 5

vi = 6

vii = 7

viii = 8

ix = 9 

x = 10

xi = 11

xii = 12

xiii = 13

xiv = 14

xv = 15

xvi = 16

xvii = 17

xviii = 18

xix = 19

xx = 20

xxi = 21

xxii = 22

xxix = 29

*** = 30

***iv = 34

***v = 35

***ix = 39

xl = 40

l = 50

li = 51

lv = 55

lx = 60

lxv = 65

l*** = 80

xc = 90

xciii = 93

xcv = 95

xcviii = 98

xcix = 99

c = 100

cc = 200

ccc = 300

cd = 400

d = 500

dc = 600

dcc = 700

dccc = 800

cm = 900

cmxcix = 999

本題目的要求是:請編寫程式,由使用者輸入若干個羅馬數字串,程式輸出對應的十進位制表示。

輸入格式是:第一行是整數n,表示接下來有n個羅馬數字(n<100)。

以後每行乙個羅馬數字。羅馬數字大小不超過999。

要求程式輸出n行,就是羅馬數字對應的十進位制資料。

例如,使用者輸入:

3l***

xciii

dccii

則程式應該輸出:

8093

702

#include#includeusing namespace std;

int toi(string x)

int main()

cout

}

藍橋杯 羅馬數字

題目 古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在示 大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不 是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止 在數字 現 0 的概念!羅馬數字的表示主要依賴以下幾個基本符號 i 1 ...

藍橋杯 羅馬數字的轉化

古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止在數字中出現0的概念!羅馬數字的表示主要依賴以下幾個基本符號 i 1 v 5 x ...

藍橋杯 羅馬數字轉換器

古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止在數字中出現0的概念!羅馬數字的表示主要依賴以下幾個基本符號 i 1 v 5 x ...