A29695.高精度B进制加法
2024-12-31 18:11:48
发布于:江苏
9阅读
0回复
0点赞
#include<iostream>
#include<cstring>
using namespace std;
string jzadd(string A,string B,int jz){
string C="";
int a[200],b[200],sum[201],c[201],lena=A.length(),lenb=B.length(),i=0,max=(lena>lenb?lena:lenb),x=0,digs=max;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(sum,0,sizeof(c));
for(;i<max;i++){
if(i<lena){
if(A[lena-i-1]>='0'&&A[lena-i-1]<='9'){
a[i]=A[lena-i-1]-'0';
}else{
a[i]=10+A[lena-i-1]-'A';
}
}
if(i<lenb){
if(B[lenb-i-1]>='0'&&B[lenb-i-1]<='9'){
b[i]=B[lenb-i-1]-'0';
}else{
b[i]=10+B[lenb-i-1]-'A';
}
}
sum[i]=a[i]+b[i]+x;
x=sum[i]/jz;
sum[i]%=jz;
}
digs+=x;
if(x){
sum[i]=a[i]+b[i]+x;
x=sum[i]/jz;
sum[i]%=jz;
}
for(int i=0;i<digs;i++){
c[i]=sum[digs-i-1];
if(c[i]>=0&&c[i]<=9){
C+=c[i]+'0';
}else{
C+=c[i]-10+'A';
}
}
return C;
}
int main(){
int jz;
string A,B;
cin>>jz>>A>>B;
cout<<jzadd(A,B,jz);
return 0;
}
这里空空如也
有帮助,赞一个