1002 A+B II
#include <stdio.h>
#include<ctype.h>
#include<string.h>
#define MAXN 1005
char a[25][MAXN];
char b[25][MAXN];
int da[MAXN];
int db[MAXN];
int dc[MAXN];
int dest[25][MAXN];
int main()
{
int T,t;
int i,j,k,n,m;
int temp[25];
scanf("%d",&T);
t=T;
while(T--)
{
scanf("%s",a[t-T]);
scanf("%s",b[t-T]);
// printf("%s--",a[t-T]);
memset(dest,-1,sizeof(dest[t-T]));
memset(dc,0,sizeof(dc));
n=strlen(a[t-T])+1;
m=strlen(b[t-T])+1;
if(a[t-T][0]=='0'&&b[t-T][0]=='0'){return 0;}
for(i=1;i<n;i++)
{
da[n-i-1]=a[t-T][i-1]-48;
}
/*
for(i=0;i<n;i++){
printf("%d--",da[i]);
}printf("\n");*/
for(j=1;j<m;j++)
{
db[m-j-1]=b[t-T][j-1]-48;
}
/*
for(i=0;i<m;i++){
printf("%d--",db[i]);
}printf("\n");
*/
if(n<=m){
for(i=0;i<m-1;i++)
{
if(i<n-1){
dc[i+1]=(da[i]+db[i]+dc[i])/10;
dc[i]=(da[i]+db[i]+dc[i])%10;
}else if(i>=n-1){
dc[i+1]=(db[i]+dc[i])/10;
dc[i]=(db[i]+dc[i])%10;
}
}
}
if(n>m){
for(i=0;i<n-1;i++)
{
if(i<m-1){
dc[i+1]=(da[i]+db[i]+dc[i])/10;
dc[i]=(da[i]+db[i]+dc[i])%10;
}else if(i>=m-1){
// printf("%d---%d----%d-------",dc[i],dc[i+1],da[i]+dc[i]);
dc[i+1]=(da[i]+dc[i])/10;
// printf("%d\n",dc[i+1]);
dc[i]=(da[i]+dc[i])%10;
}
}
//printf("\n");
/*
for(i=0;i<n-1;i++){
printf("%d--",dc[i]);
}printf("\n");*/
}
k=n>m ? n:m;
if(dc[k-1]==0)
{
for(i=k-2;i>=0;i--)
{
dest[t-T][k-i-2]=dc[i];
}
temp[t-T]=k-1;
}
else{
for(i=k-1;i>=0;i--)
{
dest[t-T][k-i-1]=dc[i];
}
temp[t-T]=k;
}
}
for(i=1;i<t;i++)
{
printf("Case %d:\n",i);
printf("%s + %s = ",a[i],b[i]);
for(j=0;j<temp[i];j++)
{
printf("%d",dest[i][j]);
}
printf("\n\n");
}
printf("Case %d:\n",t);
printf("%s + %s = ",a[t],b[t]);
for(j=0;j<temp[t];j++)
{
printf("%d",dest[t][j]);
}
printf("\n");
return 0;
}