题解 | #高精度整数加法#
高精度整数加法
http://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
这道题挨个加,值得注意的就是字符串不等长,还有处理等长时的进位问题,字符串不等长一般把剩余的加上去就行了,但是还要注意之前是否有进位,总之就是一定注意进位,进位,进位。
#include <algorithm>
using namespace std;
int main() {
string str1,str2;
while(cin>>str1>>str2){
int L1,L2;
L1=str1.length();L2=str2.length();
int carry = 0;
string out;
int i=0,j=0;
for(i=L1-1,j=L2-1;i>=0&&j>=0;i--,j--){
int sum = (str1[i]-'0')+(str2[j]-'0')+carry;
if(sum/10!=0)carry=1;
else carry=0;
out=to_string(sum%10)+out;
}
if(i<0&&j>=0){
while(j>=0){
int sum = (str2[j]-'0')+carry;
if(sum/10!=0)carry=1;
else carry=0;
out=to_string(sum%10)+out;
j--;
}
}
if(j<0&&i>=0){
while(i>=0){
int sum = (str1[i])-'0'+carry;
if(sum/10!=0)carry=1;
else carry=0;
out=to_string(sum%10)+out;
i--;
}
}
if(carry==1)cout<<('1'+out);
else cout<<out;
}
}