/*问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535*/
#include<stdio.h>
#include<string.h>
int main(void)
{
int i=0,index;
int n,m,a;//表示要输入的个数
long long sum=0;
int num=0;
long long product=1;
char ch[10][10]={0};//存储字符串
int arr[100]={0};//存取整数
int cnt=0,len=0;//表示个数和字符串的长度
//int arr[8];
scanf("%d",&n);//表示输入的数的个数
for (m=0;m<n;m++)
{
scanf("%s",ch[m]);
}
// gets(ch);
//char i=1;
//int num=0;
//printf("%d",i);
//printf("%d",len);
for (a=0;a<n;a++)
{
len=strlen(ch[a]);
//printf("len=%d\n",len);
for (i=len-1;i>=0;i--)
{
num=ch[a][i]-'0';
//printf("num=%d",num);
if (num<10)
{
sum=sum+num*product;
//printf("sum=%d\n",sum);
}
else
{
int tmp;
tmp=(int)(ch[a][i]-'A'+10);
//printf("tmp=%d\n",tmp);
sum=sum+tmp*product;
}
product=product*16;
}
product=1;
//printf("%lld",sum);
//10进制在转换成8进制
do
{
arr[cnt]=sum%8;
sum=sum/8;
cnt++;
}while(sum);
//printf("cnt=%d\n");
for (index=cnt-1;index>=0;index--)
{
printf("%d",arr[index]);
}
cnt=0;//为cnt重新赋值
printf("\n");
//printf("cnt1=%d\n",cnt);
}
//printf("%lld",sum);
return 0;
}