高精度
在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++小白,望大佬指正