模拟-高精度运算
其实就是要求输出的数据范围超出了标准数据范围。
所以就把它转化为数组。
(需要注意的一点是转化时要逆序转化)
个人觉得讲得是最明白的一篇
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[1000],b[1000];
int main ()
{
int len=0;
string s1,s2;
cin>>s1>>s2;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
a[0]=s1.length();
b[0]=s2.length();
for(int i=1;i<=s1.length();i++)
{
a[i]=s1[s1.length()-i]-'0';//s1和s2都是从0开始
}
for(int i=1;i<=s2.length();i++)
{
b[i]=s2[s2.length()-i]-'0';
}
len=(a[0]>b[0]?a[0]:b[0]);
for(int i=1;i<=len;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]=a[i]%10;
}
len++;//两个数相加的位数应该比大的那个大一位
while((a[len]==0)&&(len!=1))
len--;
for(int i=len;i>=1 ;i--)
{
cout<<a[i];
}
return 0;
}
纯高精度的运算没有什么意义和价值