zoukankan      html  css  js  c++  java
  • 整数运算(缺失)

    #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;
    }
  • 相关阅读:
    大牛都是这样写测试用例的,你get到了嘛?
    炸!分享美团面试关于selenium的面试题
    功能测试如何快速转向自动化测试?
    接口测试之深入理解HTTPS
    Linux之用户和权限
    Hash函数及其应用
    用代码控制网络断开与重连
    Windows Azure初体验
    JS跨域知识整理
    最大子序列和问题
  • 原文地址:https://www.cnblogs.com/mzchuan/p/13628404.html
Copyright © 2011-2022 走看看