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; }
标签:大数,int,借位,vector,数组,模板,size From: https://www.cnblogs.com/WKWKSL/p/17353825.html