1+1计算机能算出来,10000+10000也能,那1e10+1e12呢,就会产生溢出了,这时我们就该用到高精度模拟算法了
要使用高精度的话,首先需要先运用数组对两个加数进行储存。在处理前,高精度数通常会以字符串的形式储存。我们需要通过数组,将每一位的数字分别储存在数组的每一个元素
举个栗子,514+495
我们看一下洛谷这道题
P1601 A+B Problem(高精) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1601在做之前我们看一下全局变量的优缺点_昵称难产中的博客-优快云博客_全局变量的缺点
#include<bits/stdc++.h>
using namespace std;
int A[505],B[505],C[505];
int main(void)
{
string a,b;
cin>>a>>b;
int len=max(a.size(),b.size());
for(int i=1;i<=a.size();i++)A[i]=a[a.size()-i]-'0';
for(int i=1;i<=b.size();i++)B[i]=b[b.size()-i]-'0';//将字符串转换为数组
for(int i=1;i<=len;i++)//模拟进位
{
C[i]+=A[i]+B[i];
C[i+1]=C[i]/10;
C[i]%=10;
}
if(C[len+1]>0)//如果最高位进位就把长度加1
{
len++;
}
for(int i=len;i>=1;i--)
{
cout<<C[i];
}
return 0;
}