PAT1044火星數字(java實現)
題目描述:
火星人是以 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) 區間內的數字 —— 或者是地球文,或者是火星文。 -
輸出格式:
對應輸入的每一行,在一行中輸出翻譯後的另一種語言的數字。
解題思路:首先判斷輸入的字串是地球數字還是火星數字,如果是地球數字,則將其轉化為火星文,直接取餘取整操作後取對應陣列對應索引位置的火星文即可,相對較簡單。若是火星文,將其通過空格分割,若長度大於1,通過getIndex函式取得兩個陣列中相應的索引值計算出對應地球的數字,若長度為1,則只需取一個陣列中的索引計算即可
易錯點:當輸入13,26等13的倍數的時候要特別注意,七對應的火星文也是隻有一位。所以需要另加判斷。
程式:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
String[] s1 = {"jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
String[] s2 = {"tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
for (int i = 0; i < n; i++) {
String s = bf.readLine();
int r = 0;
int a1,a2;
if (s.matches("[0-9]{1,}")) {
r=Integer.valueOf(s);
if (r==0) {
System.out.println("tret");
continue;
}
if (r<13) {
a1 = r%13;
System.out.println(s1[a1-1]);
}
if (12<r&&r<169) {
a2 = r/13;
a1 = r-a2*13;
if (a1==0) {
System.out.println(s2[a2-1]);
}else {
System.out.println(s2[a2-1]+" "+s1[a1-1]);
}
}
}else{
if (s.equals("tret")) {
System.out.println(0);
continue;
}
String[] split = s.split(" ");
if (split.length!=1) {
a1 = getIndex(s1, split[1]);
a2 = getIndex(s2, split[0]);
System.out.println(a2*13+a1);
}else {
a1 = getIndex(s1, split[0]);
a2 = getIndex(s2, split[0]);
if (a1!=0) {
System.out.println(a1);
}else {
System.out.println(a2*13);
}
}
}
}
}
public static int getIndex(String[] arr,String value){
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(value)) {
return i+1;
}
}
return 0;
}
}
相關文章
- PAT1048數字加密(java實現)加密Java
- PAT1019 數字黑洞(java實現)Java
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- 震撼!新華社數字記者小諍的火星之旅
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- Java引用計數與實現Java
- linux實現猜數字小遊戲Linux遊戲
- 淺析數字化價值,如何保障數字化價值實現?
- 如何實現炫酷的數字大屏
- 實戰四:手把手教你實現數字識別
- Tensorflow實現RNN(LSTM)手寫數字識別RNN
- PbootCMS實現數字條分頁樣式效果boot
- 數字孿生如何實現?有哪些潛力?
- axure教程:如何實現數字輸入框效果
- 五步實現企業數字化轉型
- 銀彈谷:數字孿生城市如何實現?
- 打造數字化博物館都有哪些實現方式
- Qt 實現文字輸入框,帶字數限制QT
- 每個人都能實現“數字人自由”?HPG
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- [題解] 條件變數實現數字的交替輸出變數
- Java 獲取Word字數Java
- 【Java】——猜數字遊戲Java遊戲
- 首席數字官( CDO)如何加快數字化成熟步伐,推動實現經濟效益
- 從虛擬到現實:數字孿生與數字樣機的進化之路
- j實現數字化!支付寶推出便利店數字經營“山西套裝”
- 數字經濟時代,企業如何更好實現數字化轉型發展
- 用連結串列的方式實現大數相減-Java實現Java
- 深度學習實驗:Softmax實現手寫數字識別深度學習
- 求取眾數及重數的演算法實現(Java)演算法Java
- 用Python實現阿拉伯數字轉換成中國漢字Python
- 數商雲:數字化採購尋源,實現陽光采購
- 【數字化】如何通過數字化轉型實現生產製造的優化?優化
- 【JS】javascript實現頁面顯示數字時鐘JSJavaScript
- 傳統企業如何實現數字化轉型?
- 數字自然資源領域的實現路徑
- Pytorch搭建MyNet實現MNIST手寫數字識別PyTorch