火星人是以 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 行,其間以空格分隔,但行...