题目:http://acm.hdu.edu.cn/showproblem.php?pid=2057
思路:由于十六进制数可以达到14位,顾需要用long long int 存储
代码:
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
#include <map>
using namespace std;
long long to_decimal(string express)
{
long long res = 0;
bool negative = false;
if (express[0] == '-') negative = true;
long long begin = 0;
if (express[0] == '-' || express[0] == '+') begin++;
while (express[begin] != '\0')
{
long long bit = express[begin]-'0';
if (express[begin] >= 'A' && express[begin] <= 'F')
bit = express[begin] - 'A' + 10;
if (express[begin] >= 'a' && express[begin] <= 'f')
bit = express[begin] - 'a' + 10;
res = res * 16 + bit;
begin++;
}
return negative ? -res : res;
}
int main()
{
long long i, j, k;
string one, two;
while (cin >> one >> two)
{
long long res = to_decimal(one) + to_decimal(two);
if (res < 0)
{
cout << "-";
res = -res;
}
cout << hex << uppercase << res << endl;
}
return 0;
}