高精度问题(加减乘除)
1.加
vector<int> add(vector<int> &A,vector<int> &B)
{
if(A.size()<B.size() )return add(B,A);vector<int> C;int t=0;for(int i=0;i<A.size() ;i++){
t=t+A[i];if(i<B.size() ) t=t+B[i];C.push_back(t%10);t=t/10; }if(t) C.push_back(t);return C;
}
2.减:前提:A>=B
vector<int> sub(vertor<int> &A,vertor<int> &B)
{
vector<int> C;for(int i=0,t=0;i<A.size();i++){
t=A[i]-t;if(i<B.size()) t=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;
}
3.乘(高精度*低精度)
vector<int> mul(vector<int> &A,int b)
{
vector<int> C;int t=0;for(int i=0;i<A.size()||t;i++ ){
if(i<A.size() ) t=t+A[i]*b;C.push_back(t%10);t=t/10; }while(C.size() >1&&C.back() ==0) C.pop_back() ;return C;
}
4.除(高精度/低精度)
vector<int> div(vector<int> &A,int b,int &r)
{
vector<int> C;r=0;for(int i=A.size() -1;i>=0;i--){
r=r*10+A[i];C.push_back(r/b);r=r%b; }reverse(C.begin() ,C.end() );while(C.size() >1&&C.back() ==0) C.pop_back() ;return C;
}