题目链接:1044 火星数字 (20 point(s))

题目描述

火星人是以 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) 区间内的数字 —— 或者是地球文,或者是火星文。

输出格式

对应输入的每一行,在一行中输出翻译后的另一种语言的数字。

输入样例

7
0
5
13
52
168
jou
mer nov

输出样例

tret
may
tam
huh
jou dec
156
154

Java代码

/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
8/6/2019, 22:04:46 Accepted 20 1044 Java (openjdk) 80 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader; public class Main {
private static int transform(String[] arr, String number) {// 火星文转成地球文
for (int i = 0; i < arr.length; ++i) {
if (arr[i].contentEquals(number)) { // 找到
return i; // 返回下标
}
}
return -1; // 未找到,返回越界
} public static void main(String[] args) throws Exception {
String[] ones = { "tret", "jan", "feb", "mar", "apr", "may", "jun", "jly",
"aug", "sep", "oct", "nov", "dec" }; // 个位
String[] tens = { "tret", "tam", "hel", "maa", "huh", "tou", "kes", "hei",
"elo", "syy", "lok", "mer", "jou" }; // 十位
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); // 数字个数
for (int i = 0; i < n; ++i) {
String[] number = br.readLine().split(" "); // 每行的数字
char ch = number[0].charAt(0); // 获取第一个字符串的第一个字符
if (ch >= 48 && ch <= 57) { // 如果是数字,说明是地球文
int num = Integer.parseInt(number[0]); // 转成int型
if (0 == num) { // 如果是0,输出"tret"
System.out.println("tret");
} else { // 不是0
int a = num / 13; // 十位
int b = num % 13; // 个位
if (0 == a) { // 十位为0
System.out.print(ones[b]); // 输出个位的火星文
} else { // 十位不为0
System.out.print(tens[a]); // 输出十位的火星文
if (b > 0) { // 个位不为0
System.out.print(" " + ones[b]);// 输出空格和个位的火星文
}
}
System.out.println(); // 换行
}
} else { // 如果是字母,说明是火星文
if (1 == number.length) { // 火星文只有一位
if (transform(ones, number[0]) >= 0) {// 个位
System.out.println(transform(ones, number[0]));
} else { // 十位
System.out.println(transform(tens, number[0]) * 13);// ×13
}
} else { // 火星文有两位
int num = transform(tens, number[0]) * 13
+ transform(ones, number[1]);
System.out.println(num); // 十位乘以13加个位
}
}
}
}
}

提交结果

PAT(B) 1044 火星数字(Java)进制转换的更多相关文章

  1. PAT 乙级 1044 火星数字 (20 分)

    1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...

  2. POJ 1220 大数字的进制转换,偷下懒,用java

    题意为进制转换,Java的大数类就像是作弊 import java.math.BigInteger; import java.util.Scanner; public class Main { pub ...

  3. Java进制转换, 数据类型, 运算符

    1:进制转换 转换规则: 先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可 十进制到其他进制 规则:除基取余,直到商为0,最后将余数反转 十进制到二进制: 除2取余,直到商为0 ...

  4. 流程控制 if while for 已及数字类型 进制转换

    一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...

  5. java进制转换(无视正负数的差别)

    最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤其是对于负数这一方面. 下面和大家分享一下,这里只写了十进制到二进制的转换,其实都是同样的道理 public class Test1 { pub ...

  6. Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)

    负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)

  7. 初学java进制转换方面补充学习

    进制转换: 基础: ​ 二进制用的数为:0/1 ​ 八进制用的数为:0/1/2/3/4/5/6/7 ​ 十进制用的数为:0/1/2/3/4/5/6/7/8/9 ​ 十六进制用的数为:0/1/2/3/4 ...

  8. pat 1044.火星数字 Java版

    个人网站:https://www.lingluan.xyz 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, ma ...

  9. PAT Basic 1044 火星数字 (20 分)

    火星人是以 进制计数的: 地球人的 被火星人称为 tret. 地球人数字 到 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov ...

随机推荐

  1. python mongo存在插入不存在更新,同时指定如果不存在才插入的字段

    python爬虫的任务数据操作的小技巧 好久没写公众号了,最近太忙了,这里就不多说了.直接根据需求上代码,我想这个应该是大家比较喜欢的, 需求 爬取某网站的项目列表页,获取其url,标题等信息,作为后 ...

  2. PC 端常用软件

    WPS  金山文档  有道云笔记  格式工厂 运行精灵 UC 遨游 360 Firefox 浏览器 光影魔术手 美图秀秀 2345好压 火绒安全软件 有道云笔记 悟空游戏厅 微信 QQ 迅雷 百度网盘 ...

  3. file_get_contents("php://input")

    $data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...

  4. Nessus提示API Disabled错误

    Nessus提示API Disabled错误   在浏览器中打开Nessus,如果长时间没有操作,就会造成会话过期失效.这时,如果直接访问,就会提示API Disabled错误.这个时候,需要刷新页面 ...

  5. Java基础 main 参数String[] args的用法

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  6. prometheus + influxdb + grafana + mysql

    前言 本文介绍使用influxdb 作为prometheus持久化存储和使用mysql 作为grafana 持久化存储的安装方法 一 安装go环境 如果自己有go环境可以自主编译remote_stor ...

  7. S: WARNING: Could not write to (C:\Users\Administrator\AppData\Local\apktool\framework), using C:\Users\ADMINI~1\AppData\Local\Temp\ instead...

    使用ApkIDE反编译修改后,重新编译生成APK报错: > 正在编译Apk... - - 失败:S: WARNING: Could not write to (C:\Users\Administ ...

  8. DRBD UpToDate/DUnknown 故障恢复

    故障如下: root@drbd1:~# drbd-overview 0:data/0 StandAlone Primary/Unknown UpToDate/DUnknown /data/mysql ...

  9. DataGrip 2019.1 连接mysql 8.0.16

    # 下载mysql Connector/J驱动包 https://dev.mysql.com/downloads/connector/j/ 然后解压到一个目录 # 新建mysql 8.0连接驱动 打开 ...

  10. Jrebel激活方法(转)

    本次服务长期稳定提供给各位同学使用哦!服务器地址:https://jrebel.qekang.com/{GUID}在线GUID地址:在线生成GUID如果失效刷新GUID替换就可以!打开jrebel 激 ...