提示:此题用string,会简单很多
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define ll long long
#include<string.h>
#define ull unsigned long long
int ei[5]={1,2,4,8};
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
getchar();
string s;
cin>>s;
// printf("%d\n",s.size());
string ss="";
for(int i=0;i<=s.size();i++)
{
if(s[i]=='0') ss+="0000";
else if(s[i]=='1') ss+="0001";
else if(s[i]=='2') ss+="0010";
else if(s[i]=='3') ss+="0011";
else if(s[i]=='4') ss+="0100";
else if(s[i]=='5') ss+="0101";
else if(s[i]=='6') ss+="0110";
else if(s[i]=='7') ss+="0111";
else if(s[i]=='8') ss+="1000";
else if(s[i]=='9') ss+="1001";
else if(s[i]=='A') ss+="1010";
else if(s[i]=='B') ss+="1011";
else if(s[i]=='C') ss+="1100";
else if(s[i]=='D') ss+="1101";
else if(s[i]=='E') ss+="1110";
else if(s[i]=='F') ss+="1111";
}
int len=ss.length();
if(len%3==1)
{
ss="00"+ss;
}
else if(len%3==2)
{
ss="0"+ss;
}
int sum=0;
int flag=0;
for(int i=3;i<=ss.length();i+=3)
{
sum=(ss[i-3]-'0')*4+(ss[i-2]-'0')*2+(ss[i-1]-'0')*1;
if(sum)
flag=1;
if(flag) printf("%d",sum);
}
printf("\n");
}
}