#include<stdio.h>
#include<math.h>
#include<string.h>
char str[100010];
int s1[200010],s2[400010],s3[200010];
int main()
{
int i,j,k,n,len,h,sum,flag,u;
scanf("%d",&n);
getchar();
while(n--)
{
scanf("%s",str);
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
len=strlen(str);
k=0;j=0;flag=0;
for(i=0;i<len;i++)
{
if(str[i]!='0')
{
flag=1;
break;
}
}
if(!flag)
{
printf("0\n");
continue;
}
for(i=len-1;i>=0;i--)
{
if(str[i]>='0'&&str[i]<='9')
{
s1[k]=str[i]-'0';
if(s1[k]==0)
{
for(u=1;u<=4;u++)
{
s2[j++]=0;
}
}
while(s1[k])
{
s2[j]=s1[k]%2;
s1[k]/=2;
j++;
}
while(j%4!=0)
s2[j++]=0;
k++;
}
if(str[i]>='A'&&str[i]<='F')
{
s1[k]=str[i]-'A'+10;
while(s1[k])
{
s2[j]=s1[k]%2;
s1[k]/=2;
j++;
}
while(j%4!=0)
s2[j++]=0;
k++;
}
}
h=0;sum=0;k=1;
for(i=0;i<j;i++)
{
sum+=k*s2[i];
k*=2;
if((i+1)%3==0)
{
s3[h++]=sum;
sum=0;
k=1;
}
if(i==j-1&&(i+1)%3!=0)
{
s3[h++]=sum;
sum=0;
k=1;
}
}
j=h-1;
for(i=h-1;i>=0;i--)
{
if(s3[i]!=0)
break;
j--;
}
for(i=j;i>=0;i--)
printf("%d",s3[i]);
printf("\n");
}
return 0;
}
十六进制一位可以化成四位二进制,然后再三个三个取转化成八进制。