PAT (Basic Level) Practise (中文) 1044. 火星数字(20)
2017-09-08 15:39
501 查看
1044. 火星数字(20)
时间限制400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
火星人是以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
/* ac
* 这个题读题比较费解,我总结一下就是给你n个字符串,让你做相互转换
* 记住,火星数字是十三进制的,
* 因为规定输入范围(两种表示法都是[0-169))
* 换而言之就是 火星数字最大只有两位
* 思路
* 1 以字符串获取每一行数据,(因为不知道是地球数字还是火星数字)
* 2 将获取的这个字符串强转成数字,如果没有异常,那么就是地球数字,将它转成火星数字,如果有异常,那么就是火星数字
* 3 如果是地球数字,(题目说了[0-169)的区间,所以最多两位,这样简化了操作步骤),
* 地球数字化成火星数字是两位的话那么执行两次switch,将火星数字拼接输出,如果化成火星数字只有一位,
* 那么就可以直接执行第二次switch,注意,拼接时候的空格和换行问题 13,13的倍数做一下特殊处理
* 测试点2,4是13的倍数,就是为了让在做转换的时候不出现 进数 tret.也就是本来是 比喻为16进制的 D 不能够写成 D 0
* switch的时候,我直接用jinwei_arr和gewei_arr将地球数字和火星数字对应简化书写
* 4 如果是火星数字,将那个字符串切割,如果是两位的数字两个switch如果是一位一个switch,
* 这里会出现一个整位的火星进位数的情况,所以比爽switch的第一个要多加处理整13位数的情况
* 本来这里也想用字符串数组[下标的形式表示],但是报错,说case 这个位置只能写常量,只能把每个字符串分别写一遍了
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class num1044 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
String[] arr = new String
;
for (int i = 0; i < arr.length; i++) {
arr[i] = bf.readLine();
}
String[] jinwei_arr = "tam hel maa huh tou kes hei elo syy lok mer jou"
.split(" ");
String[] gewei_arr = "tret jan feb mar apr may jun jly aug sep oct nov dec"
.split(" ");
for (int i = 0; i < arr.length; i++) {
try {
int earth = Integer.parseInt(arr[i]);
if (earth<0||earth>=169) {
continue;
}
int jinwei = earth / 13;
int gewei = earth % 13;
if (jinwei != 0) {
jinwei(jinwei, jinwei_arr);
if (gewei==0) {//对13,13的倍数做处理
System.out.println();
}else {
System.out.print(" ");
gewei(gewei, gewei_arr);
System.out.println();
}
} else {
gewei(gewei, gewei_arr);
System.out.println();
}
} catch (NumberFormatException e) {
String [] mars=arr[i].split(" ");
int earch=0;
if (mars.length==2) {
switch (mars[0]) {
case "tam":
earch+=13*1;
break;
case "hel":
earch+=13*2;
break;
case "maa":
earch+=13*3;
break;
case "huh":
d4b1
earch+=13*4;
break;
case "tou":
earch+=13*5;
break;
case "kes":
earch+=13*6;
break;
case "hei":
earch+=13*7;
break;
case "elo":
earch+=13*8;
break;
case "syy":
earch+=13*9;
break;
case "lok":
earch+=13*10;
break;
case "mer":
earch+=13*11;
break;
case "jou":
earch+=13*12;
break;
default:
break;
}
switch (mars[1]) {
case "tret":
earch+=0;
break;
case "jan":
earch+=1;
break;
case "feb":
earch+=2;
break;
case "mar":
earch+=3;
break;
case "apr":
earch+=4;
break;
case "may":
earch+=5;
break;
case "jun":
earch+=6;
break;
case "jly":
earch+=7;
break;
case "aug":
earch+=8;
break;
case "sep":
earch+=9;
break;
case "oct":
earch+=10;
break;
case "nov":
earch+=11;
break;
case "dec":
earch+=12;
break;
default:
break;
}
}else {
switch (mars[0]) {
case "tret":
earch+=0;
break;
case "jan":
earch+=1;
break;
case "feb":
earch+=2;
break;
case "mar":
earch+=3;
break;
case "apr":
earch+=4;
break;
case "may":
earch+=5;
break;
case "jun":
earch+=6;
break;
case "jly":
earch+=7;
break;
case "aug":
earch+=8;
break;
case "sep":
earch+=9;
break;
case "oct":
earch+=10;
break;
case "nov":
earch+=11;
break;
case "dec":
earch+=12;
break;
case "tam":
earch+=13*1;
break;
case "hel":
earch+=13*2;
break;
case "maa":
earch+=13*3;
break;
case "huh":
earch+=13*4;
break;
case "tou":
earch+=13*5;
break;
case "kes":
earch+=13*6;
break;
case "hei":
earch+=13*7;
break;
case "elo":
earch+=13*8;
break;
case "syy":
earch+=13*9;
break;
case "lok":
earch+=13*10;
break;
case "mer":
earch+=13*11;
break;
case "jou":
earch+=13*12;
break;
default:
break;
}
}
System.out.println(earch);
}
}
}
public static void gewei(int gewei, String[] gewei_arr) {
switch (gewei) {
case 0:
System.out.print(gewei_arr[gewei]);
break;
case 1:
System.out.print(gewei_arr[gewei]);
break;
case 2:
System.out.print(gewei_arr[gewei]);
break;
case 3:
System.out.print(gewei_arr[gewei]);
break;
case 4:
System.out.print(gewei_arr[gewei]);
break;
case 5:
System.out.print(gewei_arr[gewei]);
break;
case 6:
System.out.print(gewei_arr[gewei]);
break;
case 7:
System.out.print(gewei_arr[gewei]);
break;
case 8:
System.out.print(gewei_arr[gewei]);
break;
case 9:
System.out.print(gewei_arr[gewei]);
break;
case 10:
System.out.print(gewei_arr[gewei]);
break;
case 11:
System.out.print(gewei_arr[gewei]);
break;
case 12:
System.out.print(gewei_arr[gewei]);
break;
default:
break;
}
}
public static void jinwei(int jinwei, String[] jinwei_arr) {
switch (jinwei) {
case 1:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 2:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 3:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 4:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 5:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 6:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 7:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 8:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 9:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 10:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 11:
System.out.print(jinwei_arr[jinwei - 1]);
break;
case 12:
System.out.print(jinwei_arr[jinwei - 1]);
break;
default:
break;
}
}
}
相关文章推荐
- PAT (Basic Level) Practise (中文)1044. 火星数字(20)
- PAT (Basic Level) Practise (中文)1044. 火星数字(20) C语言
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)- 1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)-1019. 数字黑洞 (20)
- PAT (Basic Level) Practise (中文) 1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)1019. 数字黑洞 (20)
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)1019. 数字黑洞 (20)
- PAT (Basic Level) Practise (中文) 1019. 数字黑洞 (20)
- PAT (Basic Level) Practise (中文)1019. 数字黑洞 (20)
- PAT BASIC LEVEL 1044. 火星数字(20)
- PAT (Basic Level) Practise (中文) 1048. 数字加密(20)
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20) C语言
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)1022. D进制的A+B (20)
- PAT (Basic Level) Practise (中文) 1008. 数组元素循环右移问题 (20)
- PAT (Basic Level) Practise (中文)- 1013. 数素数 (20)
- PAT (Basic Level) Practise (中文) 1043. 输出PATest(20)