PAT(B) 1044 火星数字(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) 区间内的数字 —— 或者是地球文,或者是火星文。
输出格式
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例
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)进制转换的更多相关文章
- PAT 乙级 1044 火星数字 (20 分)
1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...
- POJ 1220 大数字的进制转换,偷下懒,用java
题意为进制转换,Java的大数类就像是作弊 import java.math.BigInteger; import java.util.Scanner; public class Main { pub ...
- Java进制转换, 数据类型, 运算符
1:进制转换 转换规则: 先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可 十进制到其他进制 规则:除基取余,直到商为0,最后将余数反转 十进制到二进制: 除2取余,直到商为0 ...
- 流程控制 if while for 已及数字类型 进制转换
一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...
- java进制转换(无视正负数的差别)
最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤其是对于负数这一方面. 下面和大家分享一下,这里只写了十进制到二进制的转换,其实都是同样的道理 public class Test1 { pub ...
- Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)
负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)
- 初学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 ...
- pat 1044.火星数字 Java版
个人网站:https://www.lingluan.xyz 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, ma ...
- PAT Basic 1044 火星数字 (20 分)
火星人是以 进制计数的: 地球人的 被火星人称为 tret. 地球人数字 到 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov ...
随机推荐
- postman_
form-data 相当于Content-Type:multipart/form-data;它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件. x-www- ...
- php递归注意事项
/* 循环去除字符串左边的0 */ function removeLeftZero($str){ if($str['0'] == '0'){ $str = substr($str, '1'); rem ...
- 【转】把sqlite3数据导入到MySQL中
之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数据.如果我们想转换成Mysql数据库,那我们先得把旧数据从SQLite导出,然后再导入到新的Mysql数据库里去. 1.SQLit ...
- Oracle中RAISE异常
转: Oracle中RAISE异常 由三种方式抛出异常 1. 通过PL/SQL运行时引擎 2. 使用RAISE语句 3. 调用RAISE_APPLICATION_ERROR存储过程 当数据库或PL/S ...
- python3-sql解析库——sqlparse
1.官方文档 https://sqlparse.readthedocs.io/en/latest/ 2.快速开始 使用pip或者conda安装: conda install sqlparse 使用官网 ...
- Python3入门(十三)——常用内置模块之URL模块urlib
见名知意,一系列用于URL的操作 当然了,主要是用于web爬虫等处理(发送Get/Post请求,处理响应等),暂不展开, 参考:https://www.liaoxuefeng.com/wiki/101 ...
- Spring cloud微服务安全实战-3-2 第一个API及注入攻击防护
先来写一些用户的基础数据的管理的api.就是用户的基本的增删改查.用spring boot可以很容易的写出这种api 首先新建maven的项目 依赖关系 引入依赖.用最新的spring boot ht ...
- centos 安装最新版git
对个人而言,gitlab有点浪费资源,占内存太大,一个博客服务器,配置比较低,用gitlab太浪费了.(公司使用gitlab,这个适合公司团队使用) 前提条件,放行git端口,防火墙添加放行规则,将3 ...
- 了解有后门的sshd服务是如何劫持密码的
在服务器上安装一个打了后门补丁的sshd服务,当用户连接时,直接把密码记录下来,然后使用脚本发送到邮箱中. (1).实验环境 使用CentOS6.2作为系统环境,查看sshd和gcc的版本 [root ...
- 【翻译】生成 Timestamps / Watermarks
本文翻译自flink官网:https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/event_timestamps_waterm ...