高精度模板 大数减大数 可变数组vector实现

发布时间 2023-04-25 20:55:26作者: 凪风sama
vector<int> Sub(vector<int>& A, vector<int>& B)//这里默认长数减去短数
{
    vector<int> C;//结果向量
    int T = 0;//上一位借位标志位
    for (int i = 0; i < A.size(); i++)
    {
        T = A[i] - T;
        if (i < B.size())T -= B[i];//检测B数组是否已经处理完
        C.push_back((T + 10) % 10);
//这里分两种情况,T>0的话不需借位直接加入C即可,T<0需要借位,则加上10之后再加入C,综合两种情况就是(T+10)%10
if (T < 0) T = 1;//小于零,借位位为1 else T = 0; } for (int i = C.size() - 1; C[i] == 0; i--)//过滤前导的零,因为会出现123-105=018这种,我们期望输出18,故要滤掉前导的零 C.pop_back(); return C; }