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

高精度整数加法

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

从最后一位开始正常的累加,当前位为sum / 10,进位为sum % 10,每一位存的结果存在stack中,最后输出stack即可

#include <iostream>
#include <stack>

using namespace std;

int main() {
    string num1, num2;
    while (cin >> num1 >> num2) {
        int i = num1.length() - 1, j = num2.length() - 1, n1, n2, carry = 0;
        stack<int> st;
        while (i >= 0 || j >= 0 || carry > 0) {
            n1 = i >= 0 ? num1[i] - '0' : 0;
            n2 = j >= 0 ? num2[j] - '0' : 0;
            st.push((n1 + n2 + carry) % 10);
            carry = (n1 + n2 + carry) / 10;
            i--;
            j--;
        }
        while (st.size()) {
            cout << st.top();
            st.pop();
        }
        cout << endl;
    }
}
全部评论

相关推荐

10-09 16:12
门头沟学院 Java
帅宇殿下:佬,简历写的什么
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务