整数运算(缺失)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

//整数加法
void add(string &a,string &b){
    if(a.size()<b.size()){
        add(b,a);
        return ;
    }
    vector<int> m,n,s;
    for(int i=a.size()-1;i>=0;i--){
        m.push_back(a[i]-'0');
    }
    for(int i=b.size()-1;i>=0;i--){
        n.push_back(b[i]-'0');
    }
    int t=0;
    for(int i=0;i<m.size();i++){
        t+=m[i];
        if(i<n.size()){
            t+=n[i];
        }
        s.push_back(t%10);
        t/=10;
    }
    if(t){
       s.push_back(t);
    }

    for(int i=s.size()-1;i>=0;i--){
        cout<<s[i];
    }
    cout<<endl;
    return ;

}

//整数减法
void sub(string &a,string &b){
    if(a.size()<b.size()||(a.size()==b.size()&&a<b)){
        cout<<"-";
        sub(b,a);
        return ;
    }
    vector<int> m,n,s;
    for(int i=a.size()-1;i>=0;i--){
        m.push_back(a[i]-'0');
    }
    while(m.back()==0&&m.size()>1){
        m.pop_back();
    }
    for(int i=b.size()-1;i>=0;i--){
        n.push_back(b[i]-'0');
    }
    while(n.back()==0&&n.size()>1){
        n.pop_back();
    }
    int t=0;
    for(int i=0;i<m.size();i++){
        t=m[i];
        if(i<n.size()){
            t-=n[i];
        }
        if(t<0){
            m[i+1]--;
            t+=10;
        }
        s.push_back(t);
    }
    while(s.back()==0&&s.size()>1){
        s.pop_back();
    }

    for(int i=s.size()-1;i>=0;i--){
        cout<<s[i];
    }
    cout<<endl;
    return ;
}

//整数乘法
void mul(string &a,string &b){
     vector<int> m,n;
    for(int i=a.size()-1;i>=0;i--){
        m.push_back(a[i]-'0');
    }
    for(int i=b.size()-1;i>=0;i--){
        n.push_back(b[i]-'0');
    }
    //初始空间为m.size()+n.size() 初始值是0
    vector<int> s(m.size()+n.size(),0);
    for(int i=0;i<m.size();i++){
        for(int j=0;j<n.size();j++){
            s[i+j] += m[i]*n[j];
        }
    }

    int t=0;
    for(int i=0;i<s.size();i++){
        t+=s[i];
        s[i]=t%10;
        t/=10;
    }

    while(s.back()==0){
        s.pop_back();
    }

    for(int i=s.size()-1;i>=0;i--){
        cout<<s[i];
    }
    cout<<endl;
    return ;
}
//整数除法:大数除大数
void div_big(string &a,string &b){


}
//整数除法:大数除小数
void div_small(string &a,string &b){


}


int main(){
    string a,b;
    cin>>a>>b;
    add(a,b);
    sub(a,b);
    mul(a,b);
    return 0;
}
原文地址:https://www.cnblogs.com/mzchuan/p/13628404.html