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; // 消除前面的0for(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';elsea = 0;if(q>=0)b = num2[q]-'0';elseb = 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;}