题解 | #高精度整数加法#

高精度整数加法

http://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

#include <bits/stdc++.h>

using namespace std;

long str2int(string s){
    long res = 0;
    
    for(int i = 0; i < s.size(); i++){
        res = res * 10 + (s[i] - '0');
        //cout << "  " << res << endl;
    }
    //cout << res << endl;
    return res;
}

int main(){
    string A = "";
    string B = "";
    while(cin >> A >> B){
        /*long s1Num = str2int(s1);
        long s2Num = str2int(s2);
        cout << s1Num + s2Num << endl; //会超出范围*/
        
        int i = A.size() - 1; int j = B.size() - 1;
        
        string res = "";
        int carry = 0; //进位
        while(i >= 0 || j >= 0){
            int digitA = i >= 0 ? A[i--] - '0' : 0;
            int digitB = j >= 0 ? B[j--] - '0' : 0;
            
            int sum = digitA + digitB + carry;
            carry = sum / 10; //是否有进位
            sum = sum % 10; //当前的非进位和
            
            res += to_string(sum);
        }
        
        if(carry == 1) res += "1"; //最后的进位 //
        
        reverse(res.begin(), res.end()); //
        
        cout << res << endl;
    }
    
    return 0;
}
华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务