百练 2798:2进制转化为16进制

来源:互联网 发布:单片机程序员工资 编辑:程序博客网 时间:2024/05/18 19:44

http://bailian.openjudge.cn/practice/2798/


#include<iostream>#include<string>#include<cstring>using namespace std;int main(){int i,n;string s[25];for(i=0;i<25;i++)s[i]=" ";s[0]="0000";s[1]="0001";s[2]="0010";s[3]="0011";s[4]="0100";s[5]="0101";s[6]="0110";s[7]="0111";s[8]="1000";s[9]="1001";i='A'-'0';s[i++]="1010";s[i++]="1011";s[i++]="1100";s[i++]="1101";s[i++]="1110";s[i++]="1111";cin>>n;while(n--){char a[10001];cin>>a;string str="";int num = 0;int len = strlen(a);switch(len%4){case 1:str=str+"000"+a[0];num=1;break;case 2:str=str+"00"+a[0]+a[1];num=2;break;case 3:str=str+"0"+a[0]+a[1]+a[2];num=3;break;case 4:str=str+a[0]+a[1]+a[2]+a[3];num=4;break;}for(i=0;i<25;i++){if(s[i]==str){cout<<(char)(i+'0');break;}}for(i=num;i+3<len;i+=4){str="";for(int j=i;j<i+4;j++){str+=a[j];}for(int k=0;k<25;k++){if(s[k]==str){cout<<(char)(k+'0');break;}}}cout<<endl;}    return 0;}

0 0