• 高精度(高精加,高精减,高精乘,高精除)


    高精加

    #include<iostream>
    #include<vector>
    #include<string>
    using namespace std;
    
    vector<int> add(vector<int> &A, vector<int> &B)
    {
        vector<int> C;
    
        int t = 0;
        for(int i = 0; i < A.size() || i < B.size(); i++)
        {
            if(i < A.size()) t += A[i];
            if(i < B.size()) t += B[i];
            C.push_back(t % 10);
            t /= 10;
        }
        if(t) C.push_back(1);
        return C;
    }
    
    int main()
    {
        string a, b;
        vector<int> A, B;
    
        cin >> a >> b;
        for(int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0');
        for(int i = b.size()-1; i >= 0; i--) B.push_back(b[i]-'0');
    
        auto C = add(A, B);
        
        for(int i = C.size()-1; i >= 0; i--) cout << C[i];
        system("pause");
        return 0;
    }
    

    高精度减

    #include<iostream>
    #include<vector>
    #include<string>
    using namespace std;
    
    bool cmp(vector<int> &A, vector<int> &B)
    {
        if(A.size() != B.size()) return A.size() > B.size();
        for(int i = A.size()-1; i >= 0; i--)
            if(A[i] != B[i])
                return A[i] > B[i];
        return true;
    }
    
    vector<int> sub(vector<int> &A, vector<int> &B)
    {
        vector<int> C;
    
        int t = 0;
        for(int i = 0; i < A.size(); i++)
        {
            t = A[i]-t;
            if(i < B.size()) 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;
    }
    
    int main()
    {
        string a, b;
        vector<int> A, B;
    
        cin >> a >> b;
        for(int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0');
        for(int i = b.size()-1; i >= 0; i--) B.push_back(b[i]-'0');
        
        if(cmp(A, B))  //如果A >= B
        {
            auto C = sub(A, B);
            for(int i = C.size()-1; i >= 0; i--) cout << C[i];
        }
        else
        {
            auto C = sub(B, A);
    
            printf("-");
            for(int i = C.size()-1; i >= 0; i--) cout << C[i];
        }
        
        system("pause");
        return 0;
    }
    

    高精乘

    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    
    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 += A[i]*b;
            C.push_back(t % 10);
            t /= 10;
        }
        return C;
    }
    
    int main()
    {
        string a;
        int b;
    
        cin >> a >> b;
        vector<int> A;
        for(int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0');
    
        auto C = mul(A, b);
    
        while(C.size() > 1 && C.back() == 0) C.pop_back();
        for(int i = C.size()-1; i >= 0; i--) cout << C[i];
        system("pause");
        return 0;
    }
    

    高精除法

    #include<iostream>
    #include<string>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    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 %= b;
        }
        
        reverse(C.begin(), C.end());
        while(C.size() > 1 && C.back() == 0) C.pop_back();
        return C;
    }
    
    int main()
    {
        string a;
        int b;
    
        cin >> a >> b;
        vector<int> A;
        for(int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0');
        
        int r; //用来储存余数
        auto C = div(A, b, r);
    
        for(int i = C.size()-1; i >= 0; i--) cout << C[i];
        cout << endl << r << endl;
        system("pause");
        return 0;
    }
    
  • 相关阅读:
    容器云技术:容器化微服务,Istio占C位出道
    如何用istio实现请求超时管理
    技术进阶:Kubernetes高级架构与应用状态部署
    如何基于 K8S 多租能力构建 Serverless Container
    面试题目<转载>
    PHP面试出场率较高的题目<转载>
    命名规范
    字符串大小写转换(三种方法)
    php反转输出字符串(两种方法)
    获取文件名后缀的方法
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/13399626.html
Copyright © 2020-2023  润新知