蓝桥杯——算法训练 十六进制转八进制
来源:互联网 发布:java项目需求分析 编辑:程序博客网 时间:2024/06/07 23:32
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
注意
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
注意
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int len = Integer.parseInt(br.readLine()); String[] arr = new String[len]; for(int i=0; i<arr.length; ++i){ arr[i] = br.readLine(); } for(int i=0; i<arr.length; ++i){ transform1(arr[i]); } } //16-->2 public static void transform1(String str){ char[] c = new char[str.length()]; c = str.toCharArray(); StringBuffer sb = new StringBuffer(); for(int i=0; i<str.length(); ++i){ switch(c[i]){ case '0': sb.append("0000"); break; case '1': sb.append("0001"); break; case '2': sb.append("0010"); break; case '3': sb.append("0011"); break; case '4': sb.append("0100"); break; case '5': sb.append("0101"); break; case '6': sb.append("0110"); break; case '7': sb.append("0111"); break; case '8': sb.append("1000"); break; case '9': sb.append("1001"); break; case 'A': sb.append("1010"); break; case 'B': sb.append("1011"); break; case 'C': sb.append("1100"); break; case 'D': sb.append("1101"); break; case 'E': sb.append("1110"); break; case 'F': sb.append("1111"); break; } } transform2(sb); } //2-->8 public static void transform2(StringBuffer sb){ int len = sb.length(); if(len%3 == 0){ if("000".equals(sb.substring(0, 3))) sb.delete(0, 3); }else if(len%3 == 1){ if("0".equals(sb.substring(0, 1))) sb.delete(0, 1); else sb.insert(0, "00"); }else if(len%3 == 2){ if("00".equals(sb.substring(0, 2))) sb.delete(0, 2); else sb.insert(0, "0"); } StringBuffer sb2 = new StringBuffer(); int len2 = sb.length()/3; for(int i=0; i<len2; ++i){ if("000".equals(sb.substring(3*i, 3*i+3))) sb2.append("0"); else if("001".equals(sb.substring(3*i, 3*i+3))) sb2.append("1"); else if("010".equals(sb.substring(3*i, 3*i+3))) sb2.append("2"); else if("011".equals(sb.substring(3*i, 3*i+3))) sb2.append("3"); else if("100".equals(sb.substring(3*i, 3*i+3))) sb2.append("4"); else if("101".equals(sb.substring(3*i, 3*i+3))) sb2.append("5"); else if("110".equals(sb.substring(3*i, 3*i+3))) sb2.append("6"); else if("111".equals(sb.substring(3*i, 3*i+3))) sb2.append("7"); } System.out.println(sb2); }}
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
0 0
- 蓝桥杯——算法训练 十六进制转八进制
- 蓝桥杯:十六进制转八进制算法
- 蓝桥杯训练 十六进制转八进制 (小模拟)
- 蓝桥杯练习题—— 十六进制转八进制
- 16蓝桥杯基础—十六进制转八进制
- 蓝桥杯 算法设计_1 十六进制转八进制
- 蓝桥杯:十六进制转八进制的高效算法
- 蓝桥杯 十六进制转八进制
- 蓝桥杯--十六进制转八进制。。。
- 蓝桥杯 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- [蓝桥杯]十六进制转八进制
- OneDayOneClass----UIStepper
- Android初学习 - 颜色对应的xml配置值,颜色表
- 黑马程序员—【Java基础篇】之语言基础———关键字、标识符、注释、常量和变量及运算符
- Android实现自定义带文字和图片的Button
- Android 夜间模式实现(二)
- 蓝桥杯——算法训练 十六进制转八进制
- 二叉树的遍历(一)
- hdu 1010 Tempter of the Bone(搜索+奇偶剪枝)
- 9. linux 权限管理
- iOS开发系列--让你的应用“动”起来
- android优化之布局优化-Merge标签的使用
- 第六周项目三 人数不定的工资类
- ios缓存系列问题
- Codeforces Round #299 (Div. 2)