天天看點

藍橋杯十六進制轉八進制

題目:

藍橋杯十六進制轉八進制

評測結果:

藍橋杯十六進制轉八進制
package test;
import java.util.Scanner;

public class to8 {
	public static String tobit(char c){
		int x=0;
		if(c>='0'&&c<='9')x=c-'0';
		else x=c-'A'+10;
		StringBuilder ans=new StringBuilder();
		for(int i=0,p=8;i<4;i++){
			if(x>=p){
				x-=p;
				ans.append("1");
			}
			else ans.append("0");
			p/=2;
		}
		return ans.toString();
	}
	public static String to8(String s){
		int ans=0;
		for(int i=0,p=4;i<3;i++){
			if(s.charAt(i)=='1'){
				ans+=p;
			}
			p/=2;
		}
		return ans+"";
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		while (t-- > 0) {
			String s = sc.next();
			char c[]=s.toCharArray();
			StringBuilder bit=new StringBuilder();
			for(int i=0;i<c.length;i++){
				bit.append(tobit(c[i]));
			}
			StringBuilder ans=new StringBuilder();
			c=bit.toString().toCharArray();
			for(int i=c.length;i>=0;i-=3){
				if(i-3>=0){
					ans.append(to8(c[i-3]+""+c[i-2]+""+c[i-1]));
				}
				else{
					if(i==2)
					ans.append(to8("0"+c[i-2]+c[i-1]));
					else if(i==1){
						ans.append(to8("0"+""+"0"+""+c[i-1]));
					}
				}
			}
			String out=ans.reverse().toString();
			for(int i=0;i<out.length();i++){
				if(out.charAt(i)!='0'){
					System.out.println(out.substring(i));
					break;
				}
			}
		}
	}
}

           

繼續閱讀