蓝桥杯练习-基础练习-十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
解题思路
c++有控制输入输出的进制参数
或者直接模拟
AC代码
#include<iostream>
using namespace std;
int main() {
long long x;
while (cin >> hex >> x) {
cout << dec << x << endl;
}
return 0;
}
/*******模拟代码**********/
#include<iostream>
#include<string>
#include<cmath>
#define ll long long int
using namespace std;
int init(char ch) {
if (ch >= '0'&&ch <= '9')
return ch - '0';
if (ch >= 'A'&&ch <= 'Z')
return ch - 'A' + 10;
}
ll change(string str) {
int len = str.size();
ll temp = 0;
for (int i = len - 1; i >= 0; --i) {
temp += init(str[i])*pow(16, len - i - 1);
}
return temp;
}
int main() {
string x;
while (cin >> x) {
cout <<change(x)<< endl;
}
return 0;
}