import java.util.Scanner;publicclassMain{//定義常量字符串數組static String[] bin ={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};static String[] oct ={"0","1","2","3","4","5","6","7"};publicstaticvoidmain(String[] args){ Scanner s =newScanner(System.in);int n = s.nextInt();//n個十六進制正整數String[] str =newString[n];//接收十六進制正整數的數組//接收十六進制正整數for(int i =0; i < n; i++){ str[i]= s.next();}for(int i=0; i<n; i++){ String result =hexToBin(str[i]).toString();//十六進制轉換成二進制String octResult =binToOct(result);//二進制轉換成八進制if(octResult.startsWith("0")){//查找索引是否從0開始 octResult = octResult.substring(1);} System.out.println(octResult);}}//十六進制轉換成二進制privatestatic StringBuffer hexToBin(String str){int length = str.length();int start =0;int end =1; StringBuffer result =newStringBuffer();for(int i =0; i < length; i++){ String subStr = str.substring(start, end);//得到每個字符進行轉換 start++; end++; String s =transform(subStr); result.append(s);}return result;}//二進制轉換成八進制privatestatic String binToOct(String str){int length = str.length();if(length %3==1){ str="00"+str;}elseif(length %3==2){ str ="0"+str;}int start =0;int end =3; StringBuffer sb =newStringBuffer();for(int i=0; i<str.length()/3; i++){ String subStr = str.substring(start, end);//抽取三個二進制字符start +=3; end +=3; String s =transform2(subStr);//將抽取的二進制字符串轉換成八進制字符sb.append(s);}return sb.toString();}//將抽取的十六進制字符轉換成二進制字符privatestatic String transform(String str){ String result ="";switch(str){case"0": result = bin[0];break;case"1": result = bin[1];break;case"2": result = bin[2];break;case"3": result = bin[3];break;case"4": result = bin[4];break;case"5": result = bin[5];break;case"6": result = bin[6];break;case"7": result = bin[7];break;case"8": result = bin[8];break;case"9": result = bin[9];break;case"A": result = bin[10];break;case"B": result = bin[11];break;case"C": result = bin[12];break;case"D": result = bin[13];break;case"E": result = bin[14];break;case"F": result = bin[15];break;default:break;}return result;}//將抽取的二進制字符串轉換成八進制字符privatestatic String transform2(String str){ String result ="";switch(str){case"000": result = oct[0];break;case"001": result = oct[1];break;case"010": result = oct[2];break;case"011": result = oct[3];break;case"100": result = oct[4];break;case"101": result = oct[5];break;case"110": result = oct[6];break;case"111": result = oct[7];break;}return result;}}