东华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;
}
相关推荐
徐小夕5 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub6 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub7 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉
zone77397 小时前
002:RAG 入门-LangChain 读取文本
后端·算法·面试
樱木Plus7 小时前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
得物技术8 小时前
得物社区搜推公式融合调参框架-加乘树3.0实战
算法
会员源码网1 天前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing1 天前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
HelloReader1 天前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱1 天前
二叉树分解问题思路解题模式
javascript·后端·算法