刚好100行
2025-08-17 11:26:00
发布于:浙江
4阅读
0回复
0点赞
#include<iostream>
using namespace std;
string tsub(string a,string b,bool t_a){
int as,bs;
if(t_a){
as=a.size()-1;
bs=b.size();
}else{
as=a.size();
bs=b.size()-1;
}
int w=min(as,bs);
int w2=max(as,bs);
int z,t=0;
string sum="";
for (int i = 0;i<w;i++){
z=a[i]-b[i]-t;
if (z<0)t=1;
else t=0;
sum=char(z+'0')+sum;
}
if (sum=="0"){
return sum;
}
sum='-'+sum;
return sum;
}
string add(string a,string b){
int as=a.size(),bs=b.size();
int k=0;
if ((a[0]=='-') && (b[0]=='-')){
k=1;
for (int i=0;i<as-1;i++){
a[i]=a[i+1];
}
as-=1;
for (int i=0;i<bs-1;i++){
b[i]=b[i+1];
}
bs-=1;
}if ((a[0]=='-') && (b[0]!='-')){
for (int i=0;i<as-1;i++){
a[i]=a[i+1];
}
return tsub(a,b,true);
}if ((a[0]!='-') && (b[0]=='-')){
for (int i=0;i<bs-1;i++){
b[i]=b[i+1];
}
// return "";
return tsub(a,b,false);
}
string s="";
for (int i = as-1;i>-1;i--){
s=s+a[i];
}
a=s;
s="";
for (int i = bs-1;i>-1;i--){
s=s+b[i];
}
b=s;
long long w=min(as,bs);
long long w2=max(as,bs);
int j=0,z=0;
string sum="";
for (int i = 0;i<w;i++){
z=a[i]-'0'+b[i]-'0'+j;
if (z>=10){
j=1;
}else{
j=0;
}
// cout << z<< ' ?';
sum=char('0'+z-j*10)+sum;
}
for (int i = w;i<w2;i++){
if (as>bs){z=a[i]-'0'+j;}
else{ z=b[i]-'0'+j;}
if (z>=10){
j=1;
}else{
j=0;
}
sum=char('0'+z-j*10)+sum;
}
if (j){
sum=char('0'+j)+sum;
}
if (!k)return sum;
return '-'+sum;
}
int main(){
string a,b;
cin >> a >> b;
cout << add(a,b);
}
这里空空如也
有帮助,赞一个