// C = A + B;
string add(const string& A,const string& B){
string C;int t =0;for(int i = A.size()-1, j = B.size()-1; i >=0|| j >=0|| t >0; i--, j--){if(i >=0) t +=(A[i]-'0');if(j >=0) t +=(B[j]-'0');
C +=((t %10)+'0');
t /=10;}reverse(C.begin(), C.end());return C;}
减
// C = A - B;
string sub(const string& A,const string& B){
string C;int t =0;for(int i = A.size()-1, j = B.size()-1; i >=0|| j >=0|| t >0; i--, j--){if(i >=0) t =(A[i]-'0')- t;if(j >=0) t -=(B[j]-'0');
C +=((t +10)%10+'0');if(t <0) t =1;else t =0;}while(C.size()>1&& C.back()=='0') C.pop_back();reverse(C.begin(), C.end());return C;}// 判断结果是否为负boolcmp(const string& A,const string& B){if(A.size()!= B.size())return A.size()> B.size();for(int i =0; i < A.size(); i++)if(A[i]!= B[i])return A[i]> B[i];returntrue;}
乘
// res = A * B
string mul(const string& A,constint b){
string res;for(int i = A.size()-1, t =0; i >=0|| t >0; i--){if(i >=0) t +=(A[i]-'0')* b;
res +=(t %10)+'0';
t /=10;}reverse(res.begin(), res.end());return res;}
除
// res = A / b, r = A % b;// r可以设为全局变量
string div(const string& A,constint& b,int& r){
string res;for(int i =0; i < A.size(); i++){
r = r *10+(A[i]-'0');
res +=(r / b)+'0';
r %= b;}while(res.size()>1&& res.front()=='0') res = res.substr(1);return res;}