加法
计算 a+b 的值,a,b 皆不超过 10500 位。
读入这种数肯定不能用 int 或 long long,应用 string 或 char[ ] 读入;
接着,将 string 放入 int 类型的数组中;
然后相加(并处理进位);
最后输出。
要注意:需要逆序输入和输出。
//高精度加法 #include<bits/stdc++.h> using namespace std; int a[1000001],b[1000001],c[1000001],j; bool x=false; char s[1000001],ss[1000001]; int main() { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c));//初始化 cin>>s>>ss;//读入两个数 a[0]=strlen(s); b[0]=strlen(ss);//获取长度 for(int i=1; i<=a[0]; i++) a[i]=s[a[0]-i]-'0'; for(int i=1; i<=b[0]; i++) b[i]=ss[b[0]-i]-'0';//转化为数字 for(j=1; j<=max(a[0],b[0])+1; j++){ c[j]=a[j]+b[j]; if(c[j]>=10){ c[j]%=10; a[j+1]++; } }//模拟加法 c[0]=j; if(c[j+1]>0) c[0]++;//特判进位 for(int i=c[0]; i>=1; i--){//输出(删除前导零) if(x==false&&c[i]==0) continue; x=true; cout<<c[i]; } if(x==false) cout<<0;//一重保险 cout<<endl;//二重保险 return 0;//三重保险 }