关闭

基础练习 BASIC-12 十六进制转八进制

标签: java数据结构算法蓝桥杯
74人阅读 评论(0) 收藏 举报
分类:
问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

  【注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

  提示

  先将十六进制数转换成某进制数,再由某进制数转换成八进制。


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.nextLine();
		String[] hex = new String[n];
		
		for (int i=0; i<hex.length; i++){
			hex[i] = sc.next();
		}
		
		for (int i=0; i<hex.length; i++){
			hexToOctal(hex[i]);
		}
	}

	public static void hexToOctal(String s) {
		// TODO Auto-generated method stub
		String hexs = "0123456789ABCDEF";
		String octal = "01234567";
		
		String []hb = {"0000","0001","0010","0011","0100","0101","0110","0111",
				"1000","1001","1010","1011","1100","1101","1110","1111"}; 
		
		String []ob = {"000","001","010","011","100","101","110","111"};
		
		List<String> listtob = new ArrayList<String>();
		
		for (int i=0; i<ob.length; i++){
			listtob.add(ob[i]);
		}
		
		StringBuffer bstr = new StringBuffer();
		
		for (int i=0; i<s.length(); i++){
			int h = hexs.indexOf(s.charAt(i));
			bstr.append(hb[h]);
		}
		
		if(bstr.length()%3==1){
			bstr = bstr.insert(0, "00",0,2);
		}
		if(bstr.length()%3==2){
			bstr = bstr.insert(0, "0",0,1);
		}
		
		StringBuffer octalStr = new StringBuffer();
		
		for (int i=0; i<bstr.length(); i=i+3){
			String str = (String) bstr.subSequence(i, i+3);
			int num = listtob.indexOf(str);
			octalStr = octalStr.append(octal.charAt(num));
		}
		
		if(octalStr.charAt(0)=='0'){
			octalStr.deleteCharAt(0);
		}
		
		System.out.println(octalStr);
	}
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

蓝桥杯-基础练习之十六进制转八进制——BASIC-12

蓝桥杯 基础练习 十六进制转八进制 大数
  • lx417147512
  • lx417147512
  • 2014-02-28 09:18
  • 2828

蓝桥杯:基础练习 十六进制转八进制

基础练习 十六进制转八进制   时间限制:1.0s   内存限制:512.0MB        问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格...
  • catchingSun
  • catchingSun
  • 2016-01-23 22:47
  • 3145

"蓝桥杯“基础练习:十六进制转八进制

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转...
  • sr19930829
  • sr19930829
  • 2014-01-22 22:57
  • 7519

【蓝桥杯】 基础练习 BASIC-12 十六进制转八进制

蓝桥杯基础练习 之 十六进制转八进制
  • huangpingcai
  • huangpingcai
  • 2016-02-19 17:12
  • 304

蓝桥杯-基础练习之十六进制转八进制——BASIC-12

蓝桥杯 基础练习 十六进制转八进制 大数
  • lx417147512
  • lx417147512
  • 2014-02-28 09:18
  • 2828

蓝桥杯 BASIC-12 基础练习 十六进制转八进制

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整...
  • Hell_Caesar
  • Hell_Caesar
  • 2017-06-05 11:41
  • 128

蓝桥杯-基础练习12 十六进制转八进制 (最大测试数据10万位) 源码

  • 2015-04-05 19:19
  • 3KB
  • 下载

蓝桥杯 BASIC-12 十六进制转八进制【string】

给定n个十六进制正整数,输出它们对应的八进制数。
  • qq_29600137
  • qq_29600137
  • 2016-01-08 15:08
  • 421

[BASIC-12]-十六进制转八进制(java)

第一次用的是c语音的思想,其实许多东西java已经提供了好的方法 比如StringBuffer自带的方法比如,append、substring、insert等,都需要我们熟练掌握 import ...
  • sinat_32588261
  • sinat_32588261
  • 2017-03-17 20:33
  • 268

[BASIC-12] 十六进制转八进制

基础练习 十六进制转八进制   时间限制:1.0s   内存限制:512.0MB 问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数...
  • u011506951
  • u011506951
  • 2014-05-18 11:39
  • 865
    个人资料
    • 访问:15056次
    • 积分:1594
    • 等级:
    • 排名:千里之外
    • 原创:152篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条