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

高精度整数加法

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

#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
    string str_1,str_2;
    cin>>str_1>>str_2;
    if (str_1.size() > str_2.size())
        swap(str_1, str_2);
    int len_1 = str_1.size(), len_2 = str_2.size();
    vector<int> used(str_2.size() + 2);

    reverse(str_1.begin(), str_1.end());
    reverse(str_2.begin(), str_2.end());
    string result;

    for (int i = 0; i <= len_2; i++){
        if (i < len_1){
            int x = (str_1[i] - '0') + (str_2[i] - '0') + used[i];
            if (x >= 10)
                used[i + 1] = 1;
            result += (x%10) + '0';
        }
        else if (i < len_2 && i >= len_1){
            int x = (str_2[i] - '0') + used[i];
            if (x >= 10)
                used[i + 1] = 1;
            result += (x%10) + '0';
        }
        else {
            if (used[i] == 1)
                result += 1 + '0'; 
        }
    }
    
    reverse(result.begin(),result.end());
    cout <<result;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务