藍橋杯 羅馬數字轉十進位制 找規律

2021-06-29 03:36:35 字數 2033 閱讀 5540

古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不是因為發明表示法的人的智力的問題,而是因為乙個宗教的原因,當時的宗教禁止在數字中出現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 更多的示例參見下表,你找到規律了嗎?

i,1 

ii,2

iii,3

iv,4

v,5vi,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注意:

請仔細除錯!您的程式只有能執行出正確結果的時候才有機會得分!

在評卷時使用的輸入資料與試卷中給出的例項資料可能是不同的。

雖然題目描述的如此高階,但分析一下特點,可以發現,如果是小數在左,大數在右,就是大數減小數,相當於在小數上加乙個負號,而對於其他情況,無論是大數在左,小數在右,還是幾個重複的,都只是簡單的相加而已,於是,我們得到乙個結論:從左往右每次取相鄰的兩個數,如果小數在左大數在右,就在小數的前面加負號,否則不變,最後,把所有變化後的數值相加,就能得到結果,舉個例子

xcii i

10    100  1      1      1

對於(10,100),因為10<100,所以10變成-10,對於(100,1),(1,1)...,都是不需要變化的,所以最終得到的是  -10,100,1,1,1,全部相加就是93,因為題目輸入的是字串,所以應該先對字串進行處理,將其變成對應的數值

#include#includeusing namespace std;

int main()

{ int cas,i;

int rome_num[20];

char temp[20];

cin>>cas;

while(cas--)

{ int sum=0;

cin>>temp;

for(i=0;i

藍橋杯 十進位制轉十六進製制

問題描述 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位制的17在十六進製制中是11,以此類推...

藍橋杯 十進位制轉十六進製制

基礎練習 十進位制轉十六進製制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十...

藍橋杯 十六進製制轉十進位制

十六進製制轉十進位制 問題描述 從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。注 十六進製制數中的10 15分別用大寫的英文本母a b c d e f表示。樣例輸入 ffff 樣例輸出 65535 思路 十六進製制轉換為二進位制,二進位制計算十進位制 進坑點 inc...