跳转至

高精度计算

一、高精度加法(A+B)

  • 位数10^6(将每一位存到数组中)
  • 数组中的顺序:个十百千……
  • 进位的处理方式:定义一个t
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

vector<int> add(vector<int> &A, vector<int> &B){
    vector<int> C;
    int t = 0;
    for(long unsigned 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');

    vector<int> C = add(A,B);

    for(int i = C.size() - 1;i >= 0;i--) printf("%d",C[i]);

    return 0;
}

二、高精度减法(A-B)

  • 位数10^6

三、高精度乘法(A*B)

  • A位数10^6,B<=10000

四、高精度除法(A/B)