python3 1044 火星數字 20分

2021-08-16 03:14:56 字數 1459 閱讀 9510

題目如下:

火星人是以13進製計數的:

例如地球人的數字「29」翻譯成火星文就是「hel mar」;而火星文「elo nov」對應地球數字「115」。為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。

輸入格式:

輸入第一行給出乙個正整數n(<100),隨後n行,每行給出乙個[0, 169)區間內的數字 —— 或者是地球文,或者是火星文。

輸出格式:

對應輸入的每一行,在一行中輸出翻譯後的另一種語言的數字。

輸入樣例:

4295

elo nov

tam

輸出樣例:
hel mar

may115

13

題目解析:

很簡單的問題,**如下,主函式呼叫兩個函式分別應對地球文或火星文。

x = ['tret','jan','feb','mar','apr','may','jun','jly','aug','sep','oct','nov','dec']

y = ['','tam','hel','maa','huh','tou','kes','hei','elo','syy','lok','mer','jou']

def earth(num):

y_ = num // 13

x_ = num % 13

if y_ == 0:

print(x[x_])

else:

if x_ == 0: # tret

print(y[y_])

else:

print(y[y_],x[x_])

def huo(string):

lst = string.split()

if len(lst) == 1:

if lst[0] in x:

num = x.index(lst[0])

else: # tret

num = y.index(lst[0])*13

print(num)

else:

y_, x_ = lst[0], lst[1]

num = y.index(y_)*13 + x.index(x_)

print(num)

n = eval(input())

for i in range(n):

string = input()

if string.isdigit():

earth(int(string))

else:

huo(string)

需要注意的是0的問題,並不是對應於tret,而是省略不寫的意思,是個陷阱,題目並沒有表述清楚,從樣例中才可以發現這個問題。因此在兩個函式中要處理各位為0的情況,僅此而已。

1044 火星數字 20 Python

開始的時候測試點2與4顯示答案錯誤,後來在查閱資料的時候,突然想到是有個情況沒有考慮到,就是在從地球文轉換為火星文時,對於例如13的地球文,在轉換為火星文時,應該只輸出進製就可以了,不需要把個位的0對用的火星文顯示出來,在改了這個問題後,就全部通過了。這個題目並不難,主要是把這種情況都考慮清楚。得到...

B1044 火星數字(python)

1044 火星數字 20分 火星人是以 13 進製計數的 地球人的 0 被火星人稱為 tret。地球人數字 1 到 12 的火星文分別為 jan,feb,mar,apr,may,jun,jly,aug,sep,oct,nov,dec。火星人將進製以後的 12 個高位數字分別稱為 tam,hel,ma...

1044 火星數字

火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...