问题描述:
火星人是以 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) 区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4
29
5
elo nov
tam
输出样例:
hel mar
may
115
13
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
String tmp = sc.nextLine();
// String tmp = br.readLine();
int n = Integer.parseInt(tmp);
int result=0,remainder=0;
int sum;
int c=0,d=0;
String[] carry = {"tret", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
String[] M_num = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
// ArrayList<Trans> trans = new ArrayList<>();
for(int i=0;i<n;i++) {
String s = sc.nextLine();
// String s = br.readLine();
if(s.charAt(0)>='0' && s.charAt(0)<='9') {
result = Integer.parseInt(s)/13;
remainder = Integer.parseInt(s)%13;
if(result!=0) {
if(remainder!=0) {
System.out.print(carry[result]+" "+M_num[remainder]);
}
else {
System.out.print(carry[result]);
}
}
else {
System.out.print(M_num[remainder]);
}
}
else {
String[] mars = s.split("\\s+");
if(mars.length==1) {
for(int j=0;j<M_num.length;j++) {
if(mars[0].equals(M_num[j])) {
System.out.print(j);
break;
}
if(mars[0].equals(carry[j])) {
System.out.print(j*13);
break;
}
}
}
else {
for(int k=0;k<carry.length;k++) {
if(mars[0].equals(carry[k])) {
c= k*13;
}
if(mars[1].equals(M_num[k])) {
d= k;
}
}
sum=c+d;
System.out.print(sum);
}
}
while(i!=n-1) {
System.out.print("\n");
break;
}
}
}
}
结果: