/*转载请注明出处:乄心-小黄豆http://blog.csdn.net/wuxinxiaohuangdou*/
题目大意:计算A+B,只不过不能直接用 整型!因为是1000以内的大数相加,整型表示不了!
所以只可以用字符串处理咯!
本题解题思路:用两个string保存,然后从两个string的尾部对应相加,然后再注意下进位就ok了!
一定要注意格式!格式坑了我一次!
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
int opp[1010];
int sum;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
int cas=1;
scanf("%d",&T);
while(T--)
{
string a,b;
cin>>a>>b;
printf("Case %d:\n",cas++);
cout<<a<<" + "<<b<<" = "; //注意格式!+与= 两边都有空格!
sum=0;
string::iterator ita,itb;
reverse(a.begin(),a.end()); //先反转一下。
reverse(b.begin(),b.end());
int xa,xb;
int temp=0;
for(ita=a.begin(),itb=b.begin();ita!=a.end()&&itb!=b.end();ita++,itb++)
{
char ch=(*ita);
xa=ch-'0';
ch=(*itb);
xb=ch-'0';
opp[++sum]=(xa+xb+temp)%10;
temp=(xa+xb+temp)/10;
}
int first=1;
for(;ita!=a.end();ita++) //处理两个数数位不相等的情况!
{
if(temp==1)
{
int xc=*ita-'0';
opp[++sum]=(xc+temp)%10;
temp=(temp+xc)/10;
}
else
opp[++sum]=*ita-'0';
}
for(;itb!=b.end();itb++) //处理两个数数位不相等的情况!
{
if(temp==1)
{
int xc=*itb-'0';
opp[++sum]=(xc+temp)%10;
temp=(temp+xc)/10;
}
else
opp[++sum]=*itb-'0';
}
if(temp==1) //最后可能还有一个进位要加进去哦!
opp[++sum]=temp;
for(int i=sum;i>=1;i--)
cout<<opp[i];
if(T==0) //注意格式!每两个案例间多一个换行,最后一个不要换行!
cout<<endl;
else
cout<<endl<<endl;
}
return 0;
}