东华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;
}
相关推荐
夏幻灵2 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
神仙别闹2 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
ACP广源盛139246256732 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
niucloud-admin2 小时前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言
轻舟技术A2 小时前
Pi 的 Rust 实现来了:rpi,不止一个终端 Agent
开发语言·后端·rust
王老师青少年编程2 小时前
2026年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
C++ 老炮儿的技术栈2 小时前
static的作用
c语言·c++·人工智能·单片机·c
岁月蹉跎的一杯酒2 小时前
CCM-可调颜色校正与噪声权衡
图像处理·算法·isp
额额额对了3 小时前
嵌入式 Linux 启动程序文件
开发语言·嵌入式硬件·php