#15481: line7有問題


andy.ksp@gmail.com (KT)

學校 : 高雄巿瑞祥高級中學
編號 : 70967
來源 : [163.16.204.67]
最後登入時間 :
2023-01-16 15:47:01
a013. 羅馬數字 -- NPSC 模擬試題 | From: [114.47.144.127] | 發表日期 : 2018-10-07 22:14

import sys
s=['I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M']
t=['1','4','5','9','10','40','50','90','100','400','500','900','1000']

def s_to_t(n):
num=0
for i inrange(len(n)):
for j inrange(len(s)):
if n[i:i+1]==s[j]:
num = num + int(t[j])
return num

def t_to_s(t):
rnum=[]
while t>0:
if t>=1000:
t = t - 1000
rnum.append('M')
if t>=900and t<1000:
t = t - 900
rnum.append('CM')
if t>=500and t<900:
t = t - 500
rnum.append('D')
if t>=400and t<500:
t = t - 400
rnum.append('CD')
if t>=100and t<400:
t = t - 100
rnum.append('C')
if t>=90and t<100:
t = t - 90
rnum.append('XC')
if t>=50and t<90:
t = t - 50
rnum.append('L')
if t>=40and t<50:
t = t - 40
rnum.append('XL')
if t>=10and t<40:
t = t - 10
rnum.append('X')
if t>=9and t<10:
t = t - 9
rnum.append('IX')
if t>=5and t<9:
t = t - 5
rnum.append('V')
if t>=4and t<5:
t = t - 4
rnum.append('IV')
if t>=1and t<4:
t = t - 1
rnum.append('I')
return(rnum)
 
 

for line in sys.stdin:
list01 = line.split()
iflen(list01)>1:
a = int(s_to_t(list01[0]))
b = int(s_to_t(list01[1]))
ifabs(a-b)==0:
print('ZERO')
else:
result = t_to_s(abs(a-b))
rr=''
for i inrange(len(result)):
rr = rr + result[i]
print(rr)
 
#15486: Re:line7有問題


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a013. 羅馬數字 -- NPSC 模擬試題 | From: [106.105.27.148] | 發表日期 : 2018-10-08 02:01

主要的問題出在 羅馬數字→數字 的部分。


可以考慮羅馬數字 IV (4),
由於 IV 中包含了 I 和 V ,
以你的程式來說會多算了 I 和 V 的部分~


另外就是在進行比對的判斷式 n[i:i+1]==s[j] 的部分
n[i:i+1]的寫法只會從字串中取出1個元素,
所以永遠不會相等於由2字母組成的羅馬數字 (如: IV )
故 IV 的部分並不會被算進去~


綜上所述,
你的程式會將 IV 判斷成 6

以上就是目前看到的問題,
希望有幫助到你~ OwO

 
#15502: Re:line7有問題


andy.ksp@gmail.com (KT)

學校 : 高雄巿瑞祥高級中學
編號 : 70967
來源 : [163.16.204.67]
最後登入時間 :
2023-01-16 15:47:01
a013. 羅馬數字 -- NPSC 模擬試題 | From: [39.10.200.168] | 發表日期 : 2018-10-09 20:50

主要的問題出在 羅馬數字→數字 的部分。


可以考慮羅馬數字 IV (4),
由於 IV 中包含了 I 和 V ,
以你的程式來說會多算了 I 和 V 的部分~


另外就是在進行比對的判斷式 n[i:i+1]==s[j] 的部分
n[i:i+1]的寫法只會從字串中取出1個元素,
所以永遠不會相等於由2字母組成的羅馬數字 (如: IV )
故 IV 的部分並不會被算進去~


綜上所述,
你的程式會將 IV 判斷成 6

以上就是目前看到的問題,
希望有幫助到你~ OwO

感謝您

已經解決了

 
ZeroJudge Forum