HDOJ 1002 A+B Problem Ⅱ
AC 代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int x[1001],y[1001],res[1001];
int main()
{
int n;
cin>>n;
for(int k=1;k<=n;k++)
{
//重点
//不是第一组时要做两个操作
if(k>1)
{
//清空数组
for(int i=0;i<1001;i++)
{
x[i]=0;
y[i]=0;
res[i]=0;
}
//输出换行符
cout<<endl<<endl;
}
string a,b;
cin>>a>>b;
for(int i=a.length()-1;i>=0;i--)
x[a.length()-1-i]=a[i]-'0';
for(int j=b.length()-1;j>=0;j--)
y[b.length()-1-j]=b[j]-'0';
int l=max(a.length(),b.length());
for(int i=0;i<=l;i++)
{
int t = x[i]+y[i];
if(t>9)
{
t-=10;
x[i+1]++;
}
res[i]=t;
}
int s;
for(int i=1000;i>=0;i--)
{
if(res[i])
{
s=i;
break;
}
}
cout<<"Case "<<k<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
for(int i=s;i>=0;i--)
cout<<res[i];
//如果是最后一组,则结尾输出换行
if(k==n)
cout<<endl;
}
return 0;
}
这是AC的代码,注意的地方主要有两点:
1.每组数据读入前应当清空数组,否则当前一组数据位数大于后面时,会出错。
2.注意输出格式,每组输出之间有空格隔开