c++不像一些其他的编程软件数字是可以超大的,所以高精就成了一道必修课程。
如何实现?
我们可以用char类型数组实现输入,因为每个字符相当一个数字(在此科普一下,char类型是可以输出汉字的,只要加一个数组就行,因为一个汉字占2个字符空间),然后用int类型数组贮存,进行进位储存等运算
代码
#include<bits/stdc++.h>
using namespace std;
int a[1000001],b[1000001],i;
char s[1000001],ss[1000001];
int main(){
cin>>s>>ss;
a[0]=strlen(s);
b[0]=strlen(ss);
for(i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-'0';//贮存第一个大数字(注意贮存方向,方便输出进位)
for(i=1;i<=b[0];i++)
b[i]=ss[b[0]-i]-'0';//第二个
for(i=1;i<=max(a[0],b[0]);i++) {
a[i]+=b[i];//相加
a[i+1]+=a[i]/10;//处理进位
a[i]%=10;//保留10以内的数
}
while(!a[i]&&i>1)//判断最高位是0
i--;
for(;i>=1;i--){
cout<<a[i];
}
cout<<endl;
return 0;
}