/*
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
*/
/*
#include <stdio.h>
int main(void)
{
long long a ;
scanf(“%X”,&a);
printf(“%lld\n”,a);
return 0;
}
*/
#include<stdio.h>
#include<string.h>
long long cf(int );
int main(void)
{
char a[8] ;
int t;
scanf(“%s”,a);
int i = 0 ;
int cd;
cd = strlen(a);
long long s = 0 ;
do
{
switch (a[i])
{
case ‘A’: t = 10 ;
break ;
case ‘B’: t = 11 ;
break ;
case ‘C’: t = 12 ;
break ;
case ‘D’: t = 13 ;
break ;
case ‘E’: t = 14 ;
break ;
case ‘F’: t = 15 ;
break ;
default :
t = a[i] – ‘0’ ;
break ;
}
s += cf(cd-i-1) * t;
i ++ ;
}
while( a[i] != ‘\0’);
printf(“%lld”,s);
return 0;
}
long long cf(int m)
{
long long j = 1;
while( m > 0 )
{
j *= 16;
m –;
}
return j;
}