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
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- java使用RSA加密方式,實現數字簽名Java加密
- 圓圈中最後剩下的數字(Java實現)Java
- RSA加密解密及數字簽名Java實現加密解密Java
- PAT1019 數字黑洞(java實現)Java
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 在java中程式設計實現數字簽名系統 (轉)Java程式設計
- 用ImageMagick實現數字盲水印
- linux實現猜數字小遊戲Linux遊戲
- Java引用計數與實現Java
- Java實現水仙花數Java
- 淺析數字化價值,如何保障數字化價值實現?
- 【Java】——猜數字遊戲Java遊戲
- 如何實現炫酷的數字大屏
- 每個人都能實現“數字人自由”?HPG
- 點選按鈕實現數字增加效果
- js如何實現數字保留小數點後兩位小數JS
- 數字經濟時代,企業如何更好實現數字化轉型發展
- 實戰四:手把手教你實現數字識別
- axure教程:如何實現數字輸入框效果
- 五步實現企業數字化轉型
- 數字孿生如何實現?有哪些潛力?
- Qt 實現文字輸入框,帶字數限制QT
- 打造數字化博物館都有哪些實現方式
- 銀彈谷:數字孿生城市如何實現?
- js實現的數字四捨五入效果JS
- 程式碼實現(機器學習識別手寫數字)機器學習
- Android自定義view實現數字時鐘AndroidView
- Asp.Net圖片數字水印的實現ASP.NET
- css3動畫實現數字動態增加CSSS3動畫
- PbootCMS實現數字條分頁樣式效果boot
- [題解] 條件變數實現數字的交替輸出變數
- javascript實現獲取指定數字區間的隨機數JavaScript隨機
- Java 獲取Word字數Java
- Java吸血鬼數字Java
- 數字簽名(java) (轉)Java