最顶级的算法,往往只需要最底层的逻辑
思路:

  1. 自己实现十进制按位加
  2. 两个整数位数不一致,短的在前面补0
  3. 注意进位
    #include<bits/stdc++.h>
    using namespace std;
    void biggerstr(string &a,string &b)
    {
     int m=a.size();
     int n=b.size();
     if(m<n){
         string tmp = a;
         a = b;
         b = tmp;
     }
    }
    int main(void)
    {
     string str1;
     string str2;
     while(cin>>str1>>str2){
         biggerstr(str1, str2);//保证str1是更长的那个
         int m=str1.size();
         int n=str2.size();
         int jin=0;//进位标志
         string ret ;
         for(int i=0;i<(m-n);++i)str2.insert(str2.begin(), '0');//短的前面填0
         for(int i=m-1;i>=0;--i){//简单的十进制加法规则
             int tmp = str1[i]-'0'+str2[i]-'0'+jin;
             if(tmp>=10){
                 jin=1;
                 tmp %= 10;
             }else{
                 jin=0;
             }
             ret.insert(ret.begin(), tmp+'0');
         }
         if(jin)ret.insert(ret.begin(), '1');//注意进位
         cout<<ret<<endl;
     }
     return 0;
    }