開始的時候測試點2與4顯示答案錯誤,後來在查閱資料的時候,突然想到是有個情況沒有考慮到,就是在從地球文轉換為火星文時,對於例如13的地球文,在轉換為火星文時,應該只輸出進製就可以了,不需要把個位的0對用的火星文顯示出來,在改了這個問題後,就全部通過了。
這個題目並不難,主要是把這種情況都考慮清楚。
# 得到地球文到火星文的轉換
def get_mars(my_num, fir_list, last_list):
my_num = int(my_num)
round = my_num // 13
remainder = my_num % 13
if round:
if remainder:
result = last_list[round - 1] + ' ' + fir_list[remainder]
else:
result = last_list[round - 1]
else:
result = fir_list[remainder]
return result
# 得到火星文到地球文的轉換
def get_earth(my_num, fir_list, last_list):
result = 0
if ' ' in my_num:
fir_num, last_num = my_num.split()
for i in range(12):
if fir_num == last_list[i]:
result += 13 * (i + 1)
break
for i in range(13):
if last_num == fir_list[i]:
result += i
else:
if my_num in fir_list:
for i in range(13):
if my_num == fir_list[i]:
result += i
break
else:
for i in range(12):
if my_num == last_list[i]:
result += (i + 1) * 13
break
return result
num = input()
num = int(num)
out_list =
fir_list = ['tret', 'jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jly', 'aug', 'sep', 'oct', 'nov', 'dec']
last_list = ['tam', 'hel', 'maa', 'huh', 'tou', 'kes', 'hei', 'elo', 'syy', 'lok', 'mer', 'jou']
for i in range(num):
my_num = input()
if my_num.isdigit():
result = get_mars(my_num, fir_list, last_list)
else:
result = get_earth(my_num, fir_list, last_list)
for my_n in out_list:
print(my_n)
1044 火星數字 20
火星人是以13進製計數的 地球人的0被火星人稱為tret。地球人數字1到12的火星文分別為 jan,feb,mar,apr,may,jun,jly,aug,sep,oct,nov,dec。火星人將進製以後的12個高位數字分別稱為 tam,hel,maa,huh,tou,kes,hei,elo,syy...
1044 火星數字 20
火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...
1044 火星數字 20
火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...