狗の欢乐赛TJ
2024-07-29 10:30:56
发布于:浙江
19阅读
0回复
0点赞
这题让我们算两个十六进制的数相加之和
要模拟加法得:诸位取数,判断进位,前导零,十六进制字母表示.....
额(⊙o⊙)…....
这不就是高精度(16进制plus++++)嘛?
那代码放这啦我走咯~
#include<bits/stdc++.h>
using namespace std;
string a,b,c;
char xx='1';
bool f=false;
bool bj(string a,string b)
{
return a.size()>=b.size();
}
void solve(string d)
{
for(int i=d.size()-1,j=c.size()-1;i>=2;i--,j--)
{
int x,y;
if(d[i]>='A')
{
x=10+d[i]-'A';
}
else
{
x=d[i]-'0';
}
if(c[j]>='A')
{
y=10+c[j]-'A';
}
else
{
y=c[j]-'0';
}
x+=y;
if(x>=16)
{
if(j==2)
{
f=true;
}
else
{
c[j-1]+=1;
}
x-=16;
}
if(x>=10)
{
c[j]='A'+x-10;
}
else
{
c[j]=x+'0';
}
}
return;
}
int main()
{
cin>>a>>b;
if(bj(a,b))
{
c=a;
solve(b);
}
else
{
c=b;
solve(a);
}
if(f)
{
cout<<c[0]<<c[1]<<xx;
for(int i=2;i<c.size();i++)
{
cout<<c[i];
}
}
else
{
cout<<c;
}
return 0;
}
这里空空如也
有帮助,赞一个