PAT (Basic Level) Practise (中文) 1044. 火星数字(20)

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[n];
        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":
                        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;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值