题目描述
输入一个十六进制数,输出相应的十进制数。
十六进制的基数是0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。
输入格式
输入有若干行,每行表示一个十六进制的数。
输出格式
输出每个十六进制数对应的十进制数。
输入样例
a1
1a
110
输出样例
161
26
272
代码如下
#include<bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i=(a); i<=(b); i++)
#define lop(i, a, b) for(int i=(a); i<(b); i++)
#define el "\n"
typedef long long LL;
const int N = 100010;
const double PI = 3.1415926;
map<char, int> zm;
int main ()
{
cin.tie(0);
cout.tie(0);
lop(i, 0, 10) zm['0'+i] = i;
rep(i, 0, 6) zm['a'+i] = 10+i;
string c;
while(cin >> c)
{
int res = 0;
stack<char> sta;
lop(i, 0, c.length()) sta.push(c[i]);
lop(i, 0, c.length())
{
res += zm[sta.top()] * pow(16, i);
sta.pop();
}
cout << res << el;
}
return 0;
}
该程序接收输入的十六进制数并将其转换为十进制数。通过建立字符与十六进制数值的映射,并使用栈来处理输入字符串,逐位计算得到十进制结果。示例输入包括'a1'、'1a'和'110',对应输出分别为161、26和272。
8139

被折叠的 条评论
为什么被折叠?



