高精度加法

高精度

在c++中,可以用int和long long存储整型:
int的范围为***-2,147,483,648 到 2,147,483,647***
long long的范围为***-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807***
如果int和longlong都爆了,就需要进行高精度运算

下面是高精度加法的运算方法:
思路;
(1)将需要进行运算的的数以字符的形式存入

(2)将字符类型变成整型,存入数组中

(3)两个数组的每位分别相加,存入新数组,新数组就是运算结果

(4)逆序输出

下面为代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <vector>

using namespace std;

string a,b;//定义两个字符串,把数据存进去
vector<int>n1,n2;//定义两个数组,将字符类型转换成整型
vector<int>sum;//储存结果

vector<int> f(vector <int>&n1,vector <int>&n2)
{
    int t=0;//判断是否进位
    for(int i=0;i<n1.size()||i<n2.size();i++)//能将每一位数都加一边
    {
        if(i<n1.size())t+=n1[i];
        if(i<n2.size())t+=n2[i];
        sum.push_back(t%10);//对10求余,如果两个数相加大于10,如12,求余后为2;
        t/=10;//判断是否进位
    }
    if(t)sum.push_back(t);//如果t不是0,在最后一位添加上t
    return sum;
}


int main()
{
    cin>>a>>b;
    //把字符变成数字保存到数组之中
    for(int i=a.size()-1;i>=0;i--)
    n1.push_back(a[i]-'0');
    for(int i=b.size()-1;i>=0;i--)
    n2.push_back(b[i]-'0');
    //定义函数,使两个数进行高精度运算
    f(n1,n2);
    for(int i=sum.size()-1;i>=0;i--)
    cout<<sum[i];
    return 0;
}

注:
存入数据时,要逆序存入
原因***:*** 便于进位
最后输出时,逆序输出

c++小白,望大佬指正

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值