#include <iostream>
using namespace std;
int main(){
string s1,s2,s;
cin>>s;
for(int i=0;i<s.length();++i){
if(!isdigit(s[i])) {
s1=s.substr(0,i);
s2=s.substr(i+1);
}
}
int len1=s1.length(),len2=s2.length();
if(len1>len2)
s2.insert(0,len1-len2,'0');
else if(len1<len2)
s1.insert(0,len2-len1,'0');
int borrow=0; //借位
string ans(s1.length(),'0');
for(int i=s1.length()-1;i>=0;--i){
int num=(s1[i]-'0')-(s2[i]-'0')+borrow;
borrow=0;
if(num<0) { //不够减,有借位
borrow=-1;
num+=10;
}
ans[i]=num+'0';
}
for(int i=0;i<ans.length();i++) // 除去前导0
if(ans[i]!='0') {
ans=ans.substr(i);
break;
}
if(borrow==-1) ans="-"+ans;
cout<<ans;
return 0;
}
大数加减法
于 2022-03-10 20:02:09 首次发布