大数加法模板(hdu1002)
#include <bits/stdc++.h>
using namespace std;
char a[1010];
char b[1010];
int aa[1010];
int bb[1010];
int c[1010];
int main()
{
int t;
scanf("%d",&t);
for(int g=1;g<=t;g++){
memset(aa,0,sizeof(aa));
memset(bb,0,sizeof(bb));
memset(c,0,sizeof(c));
scanf("%s",a);
scanf("%s",b);
int sta=strlen(a);
int stb=strlen(b);
for(int i=sta-1,j=1;i>=0&&j<=sta;j++,i--){
aa[j]=a[i]-'0';
}
for(int i=stb-1,j=1;i>=0&&j<=stb;j++,i--){
bb[j]=b[i]-'0';
}
int st=max(sta,stb);
for(int i=1;i<=st;i++){
c[i]+=aa[i]+bb[i]; //易错点
if(c[i]>9){
c[i+1]+=c[i]/10; //可以选择更大的除数来减小数组大小
c[i]=c[i]%10;
}
}
int k;
for(k=1010;k>=1;k--){
if(c[k])break;
}
printf("Case %d:\n%s + %s = ",g,a,b);
for(int i=k;i>=1;i--){ //除去前置0
cout<<c[i];
}
if(g!=t)cout<<endl<<endl; //注意输入格式
else cout<<endl;
}
return 0;
}