题目:求两个大整数(大于long long)之差
#include<bits/stdc++.h>
using namespace std;
vector<int> A,B,C;//动态数组
int t=0;
void pd(vector<int> &A,vector<int> &B){//判断A,B两个数的大小
//t=0,代表A=B ; t=1,代表A>B ; t=2,代表A<B
if(A.size()>B.size()){
t=1;
}
else if(A.size()<B.size()){
t=2;
}
else{
for(int i=A.size()-1;i>=0;i--){
if(A[i]>B[i]){
t=1;
break;
}
else if(A[i]<B[i]){
t=2;
break;
}
}
}
}
void jian(vector<int> &A,vector<int> &B){//相减
int t=0;
for(int i=B.size();i<A.size();i++){//将小的那个数,前面补齐和大的那个数一样长
B.push_back(0);
}
for(int i=0;i<A.size();i++){
if((A[i]+t)>=B[i]){//判断需不需要借一位
if(i!=A.size()-1|| A[i]+t!=B[i]){//判断最后的两个数不相等,这样可以避免相减完之后开头存在0
C.push_back(A[i]+t-B[i]);
t=0;
}
}
else{
C.push_back(A[i]+t-B[i]+10);
t=-1;
}
}
}
int main(){
string 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');
pd(A,B);//判断A,B的大小
if(t==0) cout<<0;
else if(t==1) jian(A,B);//大的数在前面,小的数在后面
else if(t==2) jian(B,A);
for(int i=C.size()-1;i>=0;i--) cout<<C[i];
return 0;
}