MATLAB中將數字轉換成羅馬數字

2021-10-02 16:07:20 字數 2066 閱讀 1359

通常我們所接觸到的10

1010

進製、2

22進製計數法都歸屬於按位計數法,通常來說,n

nn進製計數法的特徵有:

使用的數字有0,1

,...

,n−1

0,1,...,n-1

0,1,..

.,n−

1,共n

nn種;

從右往左分別為n0位

,n1位

,n2位

……

n^0位,n^1位,n^2位……

n0位,n1

位,n2

位……比如,對於n

nn進製中的數字b0b

1b2b

3b

4b_0b_1b_2b_3b_4

b0​b1​

b2​b

3​b4

​,其組成為:

b 0∗

n4+b

1∗n3

+b2∗

n2+b

3∗n1

+b4∗

n0

b_0*n^4+b_1*n^3+b_2*n^2+b_3*n^1+b_4*n^0

b0​∗n4

+b1​

∗n3+

b2​∗

n2+b

3​∗n

1+b4

​∗n0

其中b 0,

b1,b

2,b3

,b

4b_0,b_1,b_2,b_3,b_4

b0​,b1

​,b2

​,b3

​,b4

​是00

0到n−

1n-1

n−1中的數字。

羅馬計數法就是不按位計數法,並且我們在生活中也十分常見,它的主要特徵有:

數字沒有意義,只表示數字本身

沒有0使用m, cm, d,cd, c,xc,l,xl,x,ix,v,iv,i分別表示1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1

將併排的數字加起來就是我們要表示的數

比如十進位制中的2008,使用羅馬計數法表示就是mmviii

這個任務其實很有意思,其結合了程式設計入門中「輸出數字的每一位」這個問題與擴充套件字串,利用matlab中字串型別操作十分簡便,**如下:

function romstr =

dec2rom

(n) romstr ="";

if n==

0return

; end

strtable =

["m"

,"cm"

,"d"

,"cd"

,"c"

,"xc"

,"l"

,"xl"

,"x"

,"ix"

,"v"

,"iv"

,"i"];

basenumbers =

[1000

,900

,500

,400

,100,90

,50,40

,10,9

,5,4

,1];

for i =1:

length

(strtable)

t =floor

(n/basenumbers

(i))

;if t

for j =1:t

romstr = romstr +

strtable

(i);

endn =

mod(n,

basenumbers

(i))

; end

end

end

>>dec2rom(n)

ans =

"mmviii"

程式設計師的數學/(日)結城浩著;管傑譯. ——北京:人民郵電出版社,2012.

羅馬數字轉換成整數

時間限制 1000ms 記憶體限制 65536k 給定乙個羅馬數字 s s,將羅馬數字轉換成整數。如羅馬數字i,ii,iii,iv,v分別代表數字 1,2,3,4,51,2,3,4,5。首先要來了解一下羅馬數字表示法,基本字元有 77 個 i v x l c d m,分別表示 11 55 1010 ...

整數轉換成羅馬數字

編寫乙個將整數n 1 n 9999 轉換成羅馬數字。假如說我們有乙個數字22,那麼它轉換的方式為22 10 12 0 則肯定先有乙個x,接著12 10 2 0 則接著在x後面加上x 變為xx 2 1 1 0 則肯定後面還需要新增乙個i變為xxi,1 1 0 0 後面還要新增乙個i變為xxii。這樣我...

整數轉換成羅馬數字

時間限制 1000ms 記憶體限制 65536k 給定乙個整數 num 將整數轉換成羅馬數字。如 1,2,3,4,5 對應的羅馬數字分別為i,ii,iii,iv,v等。第一行輸入乙個整數 num 1 num 3999 輸出 num 對應的羅馬數字。樣例輸入123 樣例輸出cxxiii 總結 一道簡單...