蓝桥杯 基础练习 十六进制转十进制
基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
16进制转10进制 例:8A5F=16^3*8+16^2*10+16^1*5+16^0*15;
#include<stdio.h> #include<string.h> #include<string> #include<math.h> #include<algorithm> #define LL long long #define PI atan(1.0)*4 #define DD doublea #define MAX 100100 #define mod 10007 using namespace std; char a[10]; char s[]="ABCDEF"; int main() { int n,m,j,i,len,sum; while(scanf("%s",a)!=EOF) { int len=strlen(a); LL sum=0; strrev(a); for(i=0;i<len;i++) { if(a[i]>='0'&&a[i]<='9') sum+=(pow(16,i)*(a[i]-'0')); else if(a[i]>='A'&&a[i]<='F') { for(j=0;j<6;j++) { if(a[i]==s[j]) { sum+=(pow(16,i)*(j+10)); break; } } } } printf("%lld\n",sum); } return 0; }