题解 | 【模板】高精度加法

【模板】高精度加法

https://www.nowcoder.com/practice/c26e34baf994453eae63fe05d39009e3

原理

说白了就是模拟小学的竖式加法,注意好进位,把输入的数当成字符串就行啦

直接上代码吧,注释讲的很清楚,觉得不错的别忘了点个赞哦

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string A, B;
    vector<int> ans(520, 0), a(520, 0), b(520, 0);
    cin >> A;
    cin >> B;
    int len = max(A.size(), B.size());
    for (int i = A.size() - 1, j = 1; i >= 0; i--, j++)
    {
        a[j] = A[i] - '0';//先把每一个数都存储起来
    }
    for (int i = B.size() - 1, j = 1; i >= 0; i--, j++)
    {
        b[j] = B[i] - '0';//也是先把每一个数都存储起来
    }
    for (int i = 1; i <= len; i++)
    {
        ans[i] += (a[i] + b[i]);//模拟进位,先看看同一位的数加起来是多少
        ans[i + 1] += (ans[i]) / 10;//再看该进位多少
        ans[i] %= 10;//最后是剩下的本位的数
    }
    if (ans[len + 1])
    {
        len++;//如果最后还有一位进位,别忘了加上awa
    }
    for (int i = len; i >= 1; i--)
    {
        cout << ans[i];
    }
}

全部评论
mark
点赞 回复 分享
发布于 12-17 11:39 山东

相关推荐

11-06 23:30
已编辑
华中师范大学 后端工程师
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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