题解 | 16进制加法
2025-08-21 15:58:44
发布于:江苏
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
char c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//十六进制数组
int f(char ch){//转换
if(ch>='0'&&ch<='9')return ch-'0';
if(ch>='A'&&ch<='F')return ch-'A'+10;
return 0;
}
int main() {
string a,b;
cin>>a>>b;
long long ra=0;
for (int i=2;i<a.size();i++) {
ra=ra*16+f(a[i]);
}//a求值
long long rb=0;
for (int i=2;i<b.size();i++){
rb=rb*16+f(b[i]);
}//b求值
long long t=ra+rb;
if(t==0){
cout<<"0X0"<<endl;
return 0;
}//特殊判断
string ul="";
while(t>0){
ul+=c[t%16];//转换为十六进制
t/=16;
}
reverse(ul.begin(),ul.end());//根据特性翻转字符串
cout<<"0X"<<ul;
}
这里空空如也
有帮助,赞一个