https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808
测试点1、3是没有考虑到两数相加的最高位要进位的情况。
测试点5是没考虑到两数都是0的情况,比如num1是00000,num2是000。
#include<iostream>
#include<string.h>
using namespace std;
int main() {
int i, j, a, b, c, sum, jin=0;
string str, num1, num2, res="";
cin >> str >> num1 >> num2;
// 消除前面的0
for(i=0; i<num1.size() && num1[i]=='0'; i++);
for(j=0; j<num2.size() && num2[j]=='0'; j++);
num1.erase(0, i);
num2.erase(0, j);
// 两数相加
int r = str.size()-1, p = num1.size()-1, q = num2.size()-1;
for(; p>=0||q>=0||jin>0; p--, q--, r--){
if(p>=0)
a = num1[p]-'0';
else
a = 0;
if(q>=0)
b = num2[q]-'0';
else
b = 0;
c = str[r]-'0';
if(c==0)
c = 10;
sum = a+b+jin;
jin = sum/c;
res = to_string(sum%c) + res;
}
if(res == ""){
cout << 0 << endl;
}else{
cout << res << endl;
}
return 0;
}