中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現羅馬數字的轉化

發布時間:2021-10-14 14:07:38 來源:億速云 閱讀:162 作者:iii 欄目:編程語言

這篇文章主要介紹“如何實現羅馬數字的轉化”,在日常操作中,相信很多人在如何實現羅馬數字的轉化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何實現羅馬數字的轉化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

問題描述

羅馬數字包含以下七種字符:I,V,X,L,C,D和M。

字符          數值

I             1

V             5

X             10

L             50

C             100

D             500

M             1000

例如,羅馬數字2寫做II,即為兩個并列的1。12寫做XII,即為X+II。27寫做XXVII,即為XX+V+II。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如4不寫做IIII,而是IV。數字1在數字5的左邊,所表示的數等于大數5減小數1得到的數值4。同樣地,數字9表示為IX。這個特殊的規則只適用于以下六種情況:

I可以放在V(5)和X(10)的左邊,來表示4和9

X可以放在L(50)和C(100)的左邊,來表示40和90。

C可以放在D(500)和M(1000)的左邊,來表示400和900

示例1:

    輸入:3

    輸出:"III"

    解釋:有三個"I"加在一起

    示例2:

    輸入:4

    輸出:"IV"

    示例3:

    輸入:58

    輸出:"LVIII"


解決方案

當題目中出現了羅馬數字列表,首先要想到的便是字典,因為字典中的value和key的條件關系正好可以對于羅馬數字字符的轉化,這里就可以得到一組字典,那么再回到題目,仔細觀察可以發現,每一個羅馬字符所對應的數值都是正整數而且可以被5整除(1除外),那么就可以思考,當輸入一個數值過后,去把轉化字符的過程中,是否可以通過整除的方式來進行轉化,例如,當輸入一個數值:21,自然它的羅馬字符為XXI,仔細觀察和思考,可以這么去思考它是被10整除得到2,2也就是兩個XX,剩下的1可以被I整除得到一個I,兩個互相合并,得到的XXI,這么一想,就可以得到一個結論,用數值去除以字典中能夠被整除的最大數值,得到的數就是相對應的多少個羅馬字符,那么此題也便迎刃而解。

羅馬數字的轉化Python代碼

num=int(input())

dict_hs={1000:'M',900:'CM',500:'D',400:'CD',100:'C',90:'XC',50:'L',40:'XL',10:'X',9:'IX',5:'V',4:'IV',1:'I'}

res=''

forkeyindict_hs:

ifnum//key!=0:

count=num//key

res+=dict_hs[key]*count

num-=key*count

print(res)

上面代碼的解題思路主要是以哈希表來進行解答,這也是絕大多數學者的解題思路,但是在力扣此題評論區的大佬卻讓我刮目相看,對此題又有了不同的想法,一位大佬說到用列表可以替換哈希表,大體的思路就是創建兩個列表,列表內的元素與羅馬字符一一對應,運用for循環遍歷長度,再通過下標解決,解題思路非常奇妙。

num=int(input())

N=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']

n=[1000,900,500,400,100,90,50,40,10,9,5,4,1]

ans=''

foriinrange(len(n)):

ifnum>=n[i]:

count=num//n[i]

num-=n[i]*count

ans+=N[i]*count

print(ans)

運行示例:

如何實現羅馬數字的轉化

如何實現羅馬數字的轉化

到此,關于“如何實現羅馬數字的轉化”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋中市| 马鞍山市| 化隆| 靖宇县| 威信县| 天峻县| 紫云| 龙陵县| 临沧市| 西林县| 伊吾县| 东方市| 高密市| 乐至县| 保山市| 招远市| 隆昌县| 长子县| 响水县| 江孜县| 若羌县| 隆化县| 扎鲁特旗| 鲁甸县| 和政县| 中卫市| 西贡区| 南华县| 聂荣县| 华池县| 江门市| 泰顺县| 大名县| 兴仁县| 九江县| 乾安县| 建水县| 泸溪县| 镶黄旗| 旺苍县| 西和县|