高精度加法(超简单~)
我们都知道,c++中每一种类型的变量都有自己的大小。最大的是long long类型,它的取值是9223372036854775807 ~ -9223372036854775807。但是在很多时候,我需要用到更大的数,这时我们就要使用新的东西——高精度。
依照竖式的计算规则。
我们需要用到字符串输入来计算高精度加法。
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
string a,b;
int l,jie[500],j1[500],j2[500],len,s1,s2,x;
bool r;
int main()
{
cin>>a>>b;
s1=a.size();
s2=b.size();
for(int i=s1-1;i>=0;i--)//反向存储
{
int s=a[i];
s-=48;
j1[l]=s;
l++;
}
l=0;
for(int i=s2-1;i>=0;i--)//反向存储
{
int s=b[i];
s-=48;
j2[l]=s;
l++;
}
len=max(s1,s2);
for(int i=0;i<len;i++)
{
jie[i]=(j1[i]+j2[i]+x)%10;//存和
x=(j1[i]+j2[i]+x)/10;//存进位
if(i==len-1&&x!=0)//判断最高位
{
jie[len]=1;
len++;
break;
}
}
for(int i=len-1;i>=0;i--)
{
if(jie[i]!=0||i==0) r=true;//去除前导零
if(r==true) cout<<jie[i];
}
return 0;
}