您的位置:首页 > 大数据 > 人工智能

[杭电]A + B Again

2014-05-04 15:18 288 查看
题目: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;
}

            

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  杭电 A + B Again