蓝桥杯 十六进制转八进制(超大测试数据,java实现)
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
拿到题目觉着还挺简单,直接用了String和Integer的几个函数,样例输出没问题。提交上去发现提示运行错误。
下载下来测试数据,才知道输入进去了一个多么变态的数:
import java.util.Arrays;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String [] result=new String[11];
for(int i=0;i<n;i++){
String h=in.next();
String b=Integer.toBinaryString(Integer.valueOf(h, 16));
String o=Integer.toOctalString(Integer.valueOf(b, 2));
result[i]=o;
}
for(int i=0;i<n;i++){
System.out.println(result[i]);
}
}
}
第一次没有通过的代码
测试数据:

在第一次的代码上做了改动:
①首先将每一位十六进制数转换为四位二进制数(一定要转为4位,使用前导0),保存为字符串;
②将字符串长度化为3的倍数,以便向八进制转化;
③每三位转化为八进制,去掉前导零;
代码如下,可通过测试:
import java.util.Arrays;
import java.util.Scanner; public class Poj { public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String [] result=new String[11];//保存最后输出的结果
/*十六进制转化为二进制*/
for(int i=0;i<n;i++){
String h=in.next();
StringBuilder tempB=new StringBuilder();
for(int m=0;m<h.length();m++){
char numH=h.charAt(m);
String b=Integer.toBinaryString(Integer.valueOf(String.valueOf(numH), 16)); for(int k=b.length();k<4;k++){
b='0'+b;
} tempB.append(b);
} /*二进制转化为八进制*/
StringBuilder tempO=new StringBuilder();//长度变为3的倍数,需要补的前导0的个数
int addZero=3-tempB.length()%3;
for(int p=0;p<addZero;p++){
tempB=new StringBuilder("0").append(tempB);
}
for(int m=0;m<tempB.length();m+=3){
//把字符串长度转换为三的倍数添加前导0
String numB=tempB.substring(m, m+3);
String o=Integer.toOctalString(Integer.valueOf(String.valueOf(numB), 2));
tempO.append(o);
}
result[i]=tempO.toString().replaceAll("^(0+)", "");//用正则表达式去掉前导零
}
for(int i=0;i<n;i++){
System.out.println(result[i]);
}
}
}
蓝桥杯 十六进制转八进制(超大测试数据,java实现)的更多相关文章
- Java实现蓝桥杯十六进制转八进制
基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n ( ...
- 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). 本题思路很直白,两重循环.外层 ...
- 算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)
目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里. ...
- 算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)
目录 1 海盗分金币 2 六角幻方 3 格子放鸡蛋 4 排列序数 5 幂一矩阵 6 供水设施 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 海盗分金币 有5个海盗,相约进行一次帆船比赛. 比 ...
- 蓝桥杯-买不到的数目-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)
目录 1 好好学习 2 埃及分数 3 金蝉素数 4 横向打印二叉树 5 危险系数 6 公式求值 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的 ...
- 算法笔记_210:第六届蓝桥杯软件类决赛真题(Java语言C组)
目录 1 机器人数目 2 生成回文数 3 空心菱形 4 奇怪的数列 5 密文搜索 6 居民集会 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 机器人数目 标题:机器人数目 少年宫新近邮购了小机器人 ...
- 算法笔记_097:蓝桥杯练习 算法提高 P1001(Java)
目录 1 问题描述 2 解决方案 1 问题描述 当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法.具体来说,首先以字符串的形式输入两个整 ...
- 蓝桥杯省赛 牌型种数java
小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺 ...
随机推荐
- Python 基础语法学习笔记
以下运行结果均通过Python3.5版本实测! 1.列表转换为字典 a = ['a', 'b'] b = [1, 2] c = ['c','d'] print (dict([a,b,c])) 输出结果 ...
- ajax请求action返回json数据
1,服务端: HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType(&q ...
- tomcat -ROOT 与webapps 的关系,关于部署的一些问题
现象:之前遇到很奇怪的问题,发完版之后没有效果,页面还是读取上一版的. 反复查找原因发现 http://localhost:8080/mobie 这个路径下的页面是正常的, 而 http://lo ...
- Mybatis添加到Spring
一.准备工作: 1.1 添加相应的jar包依赖: 这里用到了两个jar包,一个是mybatis的,另一个是mybatis-spring的,代码如下: 1 2 3 4 5 6 7 8 9 10 < ...
- Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
一.照片采集的实用概念 根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻.可能是模型的纹理失真,模型的法线错了,模型会生成我们各种也想不到的结果,那么,是什么导致三维重建效果这么差的?是 ...
- HDU--航海舰队
海舰队 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- JsonUtil
package com.test.base.util.json; import java.beans.IntrospectionException; import java.beans.Introsp ...
- Linux 安装PHP PECL 百分百成功
1. 下载 需要安装的组件 http://pecl.php.net/packages.php 2. 解压 tar zxf 你的扩展包路径 3. 进入你解压的扩展包路径后 访问 /usr/bin ...
- PHP基础知识之遍历
遍历对象的时候,默认遍历对象的所有属性 class MyClass{ public $var1 = 'value 1'; public $var2 = 'value 2'; publ ...
- 【图文教程】Eclipse for PHP+XAMPP调试配置
一.下载安装XAMPP 下载地址:https://www.apachefriends.org/download.html, 一路“Next”,安装完毕. 二.下载Eclipse for PHP 下载地 ...