0
点赞
收藏
分享

微信扫一扫

十六进制转八进制(蓝桥杯)

有态度的萌狮子 2022-03-30 阅读 68
算法
AC代码
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;


int main(){
	int n;
	cin >> n;
	string s,t;
	while(n--){
		cin >>s;
		t="";
		for(int i = 0; i < s.length(); i++)
		{
			switch (s[i])
			{
				case '0': t+="0000";break;
				case '1': t+="0001";break;
				case '2': t+="0010";break;
				case '3': t+="0011";break;
				case '4': t+="0100";break;
				case '5': t+="0101";break;
				case '6': t+="0110";break;
				case '7': t+="0111";break;
				case '8': t+="1000";break;
				case '9': t+="1001";break;
				case 'A': t+="1010";break;
				case 'B': t+="1011";break;
				case 'C': t+="1100";break;
				case 'D': t+="1101";break;
				case 'E': t+="1110";break;
				case 'F': t+="1111";break;
			}
		}	
		  int len = t.length();
		  if(len % 3==1) t= "00" + t;
		  else if(len % 3 ==2) t="0"+t;
		  int flag = 0;
		  	for(int i = 0; i <=t.length() - 3; i+=3){
		  	int ss =(t[i] -'0')*4 +(t[i + 1] - '0')*2 +(t[i + 2]-'0');
		  	if(ss) flag = 1;//这里flag的作用是用来避免第一次出现不是0,而后面有0无法输出的情况
			  //if(ss) cout << ss;  像这种写法就没有避免中间有0的情况,这样它也不会输出中间的0 
		  	if(flag) cout <<ss;
		  }
		  cout <<endl;		
	}
	return 0;
}
举报

相关推荐

0 条评论