AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 792. 高精度减法    原题链接    简单

作者: 作者的头像   gfy要成为算法高手 ,  2024-09-05 15:53:04 ,  所有人可见 ,  阅读 3


0


一次没AC的原因
1 当a-b出现负数时 solve里边的A B应该调换顺序 solve(B,A);
2 while(C.size()>1&&C.back()==0) C.pop_back();
忘记去除前导零

#include<vector>
#include<iostream>
using namespace std;

vector<int> solve(vector<int>& A, vector<int>& B)
{
    int t = 0;
    vector<int>C;
    for (int i = 0; i <= A.size() - 1; i++)
    {
        t = A[i] - t;
        if (i < B.size()) t -= B[i];
        C.push_back((t + 10) % 10);
        if (t < 0)t = 1;
        else t = 0;
    }
    while (C.size() > 1 && C.back() == 0) C.pop_back();
    return C;
}


int main()
{
    string a, b;
    cin >> a >> b;
    vector<int>A, B;

    for (int i = a.size() - 1; i >= 0; i--)
        A.push_back(a[i] - '0');
    for (int i = b.size() - 1; i >= 0; i--)
        B.push_back(b[i] - '0');

    if (a.size() > b.size())
    {
        auto t = solve(A, B);
        for (int i = t.size() - 1; i >= 0; i--)
            cout << t[i];
    }
    else if (a.size() < b.size())
    {
        auto t = solve(B, A);
        cout << "-";
        for (int i = t.size() - 1; i >= 0; i--)
            cout << t[i];
    }
    else if (a.size() == b.size())
    {
        for (int i = A.size() - 1; i >= 0; i--)
        {
            if (A[i] > B[i])
            {
                auto t = solve(A, B);
                for (int i = t.size() - 1; i >= 0; i--)
                    cout << t[i];
                return 0;
            }
            else if (A[i] < B[i])
            {

                auto t = solve(B, A);
                cout << "-";
                for (int i = t.size() - 1; i >= 0; i--)
                    cout << t[i];
                return 0;
            }

            if (i == 0)
            {
                cout << "0"; return 0;
            }
        }
    }

    return 0;
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息