#20441: Python


wanttogo0718@gmail.com (Hello World)

School : 國立高雄師範大學
ID : 86382
IP address : [36.238.84.39]
Last Login :
2021-01-08 21:02:32
a013. 羅馬數字 -- NPSC 模擬試題 | From: [42.75.130.153] | Post Date : 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)

School : 國立高雄師範大學
ID : 86382
IP address : [36.238.84.39]
Last Login :
2021-01-08 21:02:32
a013. 羅馬數字 -- NPSC 模擬試題 | From: [42.75.130.153] | Post Date : 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)

School : No School
ID : 68108
IP address : [1.168.28.144]
Last Login :
2021-01-15 14:05:22
a013. 羅馬數字 -- NPSC 模擬試題 | From: [36.232.34.42] | Post Date : 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