Redamancy


私信TA

用户名:uq_77629755578

访问量:2606

签 名:

等  级
排  名 3705
经  验 1861
参赛次数 3
文章发表 29
年  龄 0
在职情况 学生
学  校 广西外国语学院
专  业

  自我简介:

解题思路:减法需要判断会不会为负数

注意事项:

参考代码:

#include <iostream>

#include <vector>


using namespace std;


bool cmp(vector<int> &A, vector<int> &B)

{

    if (A.size() != B.size()) return A.size() > B.size();


    for (int i = A.size() - 1; i >= 0; i -- )

        if (A[i] != B[i])

            return A[i] > B[i];


    return true;

}


vector<int> sub(vector<int> &A, vector<int> &B)

{

    vector<int> C;

    for (int i = 0, t = 0; i < A.size(); 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;

    vector<int> A, B;

    cin >> 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');


    vector<int> C;


    if (cmp(A, B)) C = sub(A, B);

    else C = sub(B, A), cout << '-';


    for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

    cout << endl;


    return 0;

}

 

0.0分

0 人评分

  评论区

  • «
  • »