• 整数运算(缺失)


    #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;
    }
  • 相关阅读:
    ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    Linux学习安装
    linux中的虚拟环境工具
    linux 文件目录权限
    PHP利用百度ai实现文本和图片审核
    Laravel + Swoole 打造IM简易聊天室
    Mysql索引降维 优化查询 提高效率
    Nginx支持比Apache高并发的原因
    网站高并发解决方案(理论知识)
    mysql大量数据分页查询优化-延迟关联
  • 原文地址:https://www.cnblogs.com/mzchuan/p/13628404.html
Copyright © 2020-2023  润新知