蓝桥 基础练习 十六进制转八进制
基础练习 十六进制转八进制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定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行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main { 5 /* public static void main(String arg[]){ 6 Scanner in=new Scanner(System.in); 7 int n=in.nextInt(); 8 for (int i = 0; i < n; i++) { 9 String s=in.next(); 10 StringBuilder sb=hTb(s); 11 bTo(sb); 12 } 13 14 } 15 public static void bTo(StringBuilder s){ 16 int ws=0; 17 int ans=0; 18 int len=s.length(); 19 boolean flag=true; 20 if(len%3==1){ 21 ans=s.charAt(0)-'0'; 22 ws+=1; 23 } 24 else if(len%3==2){ 25 ans=(int)(s.charAt(0)-'0')*2+(int)(s.charAt(1)-'0')*1; 26 ws+=2; 27 } 28 if(ans>0){ 29 System.out.print(ans); 30 flag=false; 31 } 32 for (int i = ws; i < s.length(); i+=3) { 33 ans=(s.charAt(i+0)-'0')*4+(s.charAt(i+1)-'0')*2+(s.charAt(i+2)-'0')*1; 34 35 if(flag){ 36 if(ans==0){ 37 continue; 38 } 39 else{ 40 flag=false; 41 } 42 } 43 System.out.print(ans); 44 } 45 System.out.println(); 46 } 47 public static StringBuilder hTb(String s){ 48 StringBuilder sb=new StringBuilder(); 49 for (int i = 0; i < s.length(); i++) { 50 int n=s.charAt(i); 51 switch (n) { 52 case '0':sb.append("0000"); 53 break; 54 case '1':sb.append("0001"); 55 break; 56 case '2':sb.append("0010"); 57 break; 58 case '3':sb.append("0011"); 59 break; 60 case '4':sb.append("0100"); 61 break; 62 case '5':sb.append("0101"); 63 break; 64 case '6':sb.append("0110"); 65 break; 66 case '7':sb.append("0111"); 67 break; 68 case '8':sb.append("1000"); 69 break; 70 case '9':sb.append("1001"); 71 break; 72 case 'A':sb.append("1010"); 73 break; 74 case 'B':sb.append("1011"); 75 break; 76 case 'C':sb.append("1100"); 77 break; 78 case 'D':sb.append("1101"); 79 break; 80 case 'E':sb.append("1110"); 81 break; 82 case 'F':sb.append("1111"); 83 break; 84 85 } 86 } 87 return sb; 88 }*/ 89 90 91 92 93 public static void main(String arg[]){ 94 Scanner in=new Scanner(System.in); 95 int n=in.nextInt(); 96 for (int i = 0; i < n; i++) { 97 String s=in.next(); 98 BigInteger b=new BigInteger(s,16); 99 System.out.println(b.toString(8)); 100 101 } 102 103 } 104 105 }