问题描述
  给定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实现)的更多相关文章

  1. Java实现蓝桥杯十六进制转八进制

    基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n ( ...

  2. 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解

    2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 ​ 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). ​ 本题思路很直白,两重循环.外层 ...

  3. 算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

    目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里. ...

  4. 算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)

    目录 1 海盗分金币 2 六角幻方 3 格子放鸡蛋 4 排列序数 5 幂一矩阵 6 供水设施    前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 海盗分金币 有5个海盗,相约进行一次帆船比赛. 比 ...

  5. 蓝桥杯-买不到的数目-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  6. 算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

    目录 1 好好学习 2 埃及分数 3 金蝉素数 4 横向打印二叉树 5 危险系数 6 公式求值   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的 ...

  7. 算法笔记_210:第六届蓝桥杯软件类决赛真题(Java语言C组)

    目录 1 机器人数目 2 生成回文数 3 空心菱形 4 奇怪的数列 5 密文搜索 6 居民集会 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 机器人数目 标题:机器人数目 少年宫新近邮购了小机器人 ...

  8. 算法笔记_097:蓝桥杯练习 算法提高 P1001(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法.具体来说,首先以字符串的形式输入两个整 ...

  9. 蓝桥杯省赛 牌型种数java

    小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺 ...

随机推荐

  1. java中注解的使用与实例(一)

    注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...

  2. C++-Qt【1】-退出程序&静态调试

    目前还没有发现很好的调试qt代码的方法,权且记录一下: #include "mainwindow.h" #include "ui_mainwindow.h" # ...

  3. jQuery缓存数据

    很多同学在项目中都喜欢将数据存储在HTMLElement属性上,如 1 2 3 4 <div data="some data">Test</div> < ...

  4. 2.1 -1.0 Xcode(发布时间、使用、快捷键、插件相关)

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 1.0 Xcode 发布时间 版本 iOS 版本 手机 日期 特殊介绍 Xcode 3.1 ...

  5. iPhone开发基础教程_第二章

    1.各个子文件夹的作用        Classes:                    编写的大多代码都保存在这里,其中包括所有的Objective-C类,可以在Classes文件夹下创建一些子 ...

  6. 使用git把项目提交到github

    1.需要在https://github.com/注册一个账户 2.注册成功后,新建一个repository,用来存放你要上传的项目,如下图所示 这里你需要输入你的项目的名称,可以对你的项目进行描述,如 ...

  7. SPRING SECURITY JAVA配置:Web Security

    在前一篇,我已经介绍了Spring Security Java配置,也概括的介绍了一下这个项目方方面面.在这篇文章中,我们来看一看一个简单的基于web security配置的例子.之后我们再来作更多的 ...

  8. Winform控件WebBrowser与JS脚本交互

    1)在c#中调用js函数 如果要传值,则可以定义object[]数组. 具体方法如下例子: 首先在js中定义被c#调用的方法: function Messageaa(message) {       ...

  9. Android Intent Flags

    Intent,顾名思义,即意图,通常用它来启动一个应用程序组件( Activity, Service, 或者 BroadCast Receiver ).在启动一个新的 Activity 时,可以通过给 ...

  10. 【noip 2016】 蚯蚓(earthworm)

    100分程序,写了2天+1小时 →题目在这里← 大神就是厉害--写的程序居然看都看不懂,还有就是cena上过了但是luogu上一直是恶心的TLE 首先是考虑p=0时,数组大小开到了1100000,然后 ...