#20441: Python


wanttogo0718@gmail.com (Hello World)

學校 : 國立高雄師範大學
編號 : 86382
來源 : [42.75.43.186]
最後登入時間 :
2021-05-21 22:56:38
a013. 羅馬數字 -- NPSC 模擬試題 | From: [42.75.130.153] | 發表日期 : 2020-01-23 08:39

解題思維

1. 羅馬轉阿拉伯

r2i = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}

r_num1 = input()
list1 = [r2i[c] for c in r_num1]
 
#20442: Re:Python


wanttogo0718@gmail.com (Hello World)

學校 : 國立高雄師範大學
編號 : 86382
來源 : [42.75.43.186]
最後登入時間 :
2021-05-21 22:56:38
a013. 羅馬數字 -- NPSC 模擬試題 | From: [42.75.130.153] | 發表日期 : 2020-01-23 08:56

剛手殘上傳了TAT

完整如下:

 

解題思維

1. 羅馬轉阿拉伯

IV -> (-1)*1 + 5 -> 4

XC -> (-1)*10 + 100 -> 90

r2i = {'I'1'V'5'X'10'L'50'C'100'D'500'M'1000}
 
r_num1 = input()
list1 = [r2i[c] for c in r_num1] # 字母轉代表的數字(ex: V -> 5)
for i in range(len(list1) - 1):
    if list1[i] < list1[i+1]: list1[i] *= -1 # 如果比list的下一項大,則倒數

num1 = sum(list1)
 
 
2. 阿拉伯轉羅馬:
 
i2r = {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'}
r_str = ''
while num > 0:
    for key in i2r:
        if num >= key:
            r_str += i2r[key]
            num -= key
            break
 
 
 
 
 
 
 
 
#20443: Re:Python


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.172]
最後登入時間 :
2024-04-24 20:07:19
a013. 羅馬數字 -- NPSC 模擬試題 | From: [36.232.34.42] | 發表日期 : 2020-01-23 10:28

剛手殘上傳了TAT

完整如下:

 

解題思維

1. 羅馬轉阿拉伯

IV -> (-1)*1 + 5 -> 4

XC -> (-1)*10 + 100 -> 90

r2i = {'I'1'V'5'X'10'L'50'C'100'D'500'M'1000}
 
r_num1 = input()
list1 = [r2i[c] for c in r_num1] # 字母轉代表的數字(ex: V -> 5)
for i in range(len(list1) - 1):
    if list1[i] < list1[i+1]: list1[i] *= -1 # 如果比list的下一項大,則倒數

num1 = sum(list1)
 
 
2. 阿拉伯轉羅馬:
 
i2r = {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'}
r_str = ''
while num > 0:
    for key in i2r:
        if num >= key:
            r_str += i2r[key]
            num -= key
            break
 
 
 
 
 
 
 


別貼答案,讓別人可以好好練習。

 
ZeroJudge Forum