首页 > 其他 > 详细

高精度四则运算(整数)

时间:2021-04-12 22:51:42      阅读:45      评论:0      收藏:0      [点我收藏+]
  • 大数超出了语言默认类型能表示的范围,需要特殊处理
  • 将大数存到一个数组里面,先存低位,依次存储高位

高精度加法

A + B

  • 人工模拟加法过程
#include <iostream>
#include <vector>

using namespace std;

const int N = 1e6 + 10; //经验:多开一点点空间避免边界问题

//C = A + B
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;
    }
    //最高位如果有进位,则补1
    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-- ) {
        printf("%d", C[i]);
    }
    
    return 0;
}

高精度四则运算(整数)

原文:https://www.cnblogs.com/huhu555/p/14649695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!