问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
思路:补了一下进制转换的知识,这篇博客很详细:打开链接
另外本题要注意范围开longlong,不然会爆
#include<cstdio>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
//const int N=10005;
//int a[N];
int main()
{
char s[9];
scanf("%s",s);
ll summ=0;
int len=strlen(s);
for(int i=0;i<len;++i)
{
if(s[i] <='9' && s[i]>='0')
summ+=(s[i]-'0')*pow(16,len-i-1);
else
{
int a=s[i]-'A'+10;
summ+=a*pow(16,len-i-1);
}
}
printf("%lld\n",summ);
return 0;
}