东华OJ-基础题-107-16进制加法(C++)

  • 问题描述
    某天、小晨在路上背着单词,突遇一外星人,外星人对小晨很感兴趣,为了考验小晨的智商,就向小晨提问简单加法,由于外星人使用16进制,所以,小晨必须用16进制回答。
  • 输入说明
    首先输入一个整数T,

以下T行,每行两个16进制数字

  • 输出说明
    T行,每行一个16进制数,为求出的两数之和。

其中的英文字母a到f为小写。

  • 输入范例
cpp 复制代码
2
4b0d 4887
2745 7438
  • 输出范例
cpp 复制代码
9394
9b7d

感想:使用了unordered_map<char,int> 将十六进制转为纯数字。
代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

struct add {
    string a;
    string b;
};

int main() {
    int n;
    cin>>n;
    vector<add> arr(n);
    for(int i = 0; i<n; ++i) {
        cin>>arr[i].a>>arr[i].b;
    }
    unordered_map<char,int> map = {{'1',1},{'2',2},{'3',3},{'4',4},{'5',5},{'6',6},{'7',7},
        {'8',8},{'9',9},{'a',10},{'b',11},{'c',12},{'d',13},{'e',14},{'f',15}
    };
    for(int i =0; i<n; ++i) {
        string temp_a = arr[i].a,temp_b = arr[i].b;
        string ans;
        int j = temp_a.size();
        int k = temp_b.size();
        int carry = 0,add;
        while(j&&k) {
            add = map[temp_a[--j]]+map[temp_b[--k]]+carry;
            carry = add/16;
            if(add%16>=10) {
                char target = add%16-10 +'a';
                ans = target+ans;
            } else
                ans = to_string(add%16)+ans;
        }
        while(j) {
            add = map[temp_a[--j]]+ carry;
            carry = add/16;
            if(add%16>=10) {
                char target = 'a'+ add%16-10;
                ans = target+ans;
            } else
                ans = to_string(add%16)+ans;
        }

        while(k) {
            add = map[temp_b[--k]]+ carry;
            carry = add/16;
            if(add%16>=10) {
                char target = 'a'+ add%16-10;
                ans = target+ans;
            } else
                ans = to_string(add%16)+ans;
        }

        if(carry) ans = to_string(carry) + ans;
        cout<<ans<<endl;
    }

    return 0;
}
相关推荐
小月土星6 分钟前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC15 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与20 小时前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
博客18001 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴1 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
复杂网络1 天前
论最小 Agent 计算机的形态
算法
kisshyshy2 天前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
众少成多积小致巨2 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
猿人谷2 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法