PAT菜雞進化史 乙級 1044

2021-09-11 23:03:34 字數 1824 閱讀 6522

火星人是以 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, lok, mer, jou。

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

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

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

4295

elo nov

tam

hel mar

may115

13

這題主要的麻煩在火星文轉中文身上。。

中文轉火星文中要注意的一點是tret的0僅限於數字0,像20 30 之類個位數是0的不算!!

於是乎這個0就造成了火星文只出現三個字母的時候不確定到底是個位數還是整十的數,需要都判斷一下的

#include

#include

#include

#include

#include

std::string e2m

(std::string str)

;int

m2e(std::string str)

;using

namespace std;

intmain()

// translate the number

for(

int i =

0; i < n; i++

)return0;

}string e2m

(string str)

; string ones[13]

=;if(tens_digit !=

0&& ones_digit !=0)

return tens[tens_digit -1]

+" "

+ ones[ones_digit]

;else

if(tens_digit !=0)

return tens[tens_digit -1]

;else

return ones[ones_digit];}

intm2e

(string str)

; string ones[13]

=;string str1, str2;

if(str.

size()

==4)return0;

str1 = str.

substr(0

,3);

if(str.

size()

>4)

str2 = str.

substr(4

,3);

int tens_digit =

0, ones_digit =0;

for(

int i =

0; i <

13; i++

)return tens_digit *

13+ ones_digit;

}

PAT菜雞進化史 乙級 1001

卡拉茲 callatz 猜想 對任何乙個正整數 n,如果它是偶數,那麼把它砍掉一半 如果它是奇數,那麼把 3n 1 砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到 n 1。卡拉茲在 1950 年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果...

PAT菜雞進化史 乙級 1005

卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對 n 3 進行驗證的時候,我們需要計算 3 5 8 4 2 1,則當我們對 n 5 8 4 2 進行驗證的時候,就可以直接判...

PAT菜雞進化史 乙級 1013

令 p ip i pi 表示第 i 個素數。現任給兩個正整數 m n 10 4 請輸出p mp m pm 到 p np n pn 的所有素數。輸入在一行中給出 m 和 n,其間以空格分隔。輸出從 p mp m pm 到 p np n pn 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行...