题目 : http://acm.hdu.edu.cn/showproblem.php?pid=1002
解题思路:两个大数相加,用int肯定会爆。我们用string来玩玩,首先两个数的位数可以相同,可能不相同,所有我们倒序相加,然后我们要比较他们的位数,用长的位数的数去接住他们的和,如果单个位数相加大于10,就向前进一位。最后结果再反过来。
注:这是一个神奇的网站,当他们的位数相同且结果为他们的位数加1,前面那个数显示不出来。例如:50+51=101,编译时只有01,可是交上去A了,编译的时候要在VS上,在VC上会出现一些字。虽然A了,但存在一些小问题
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n,s,i,j;
cin>>n;
string str1,str2,str,str3;
for(j=1;j<=n;j++)
{
cin>>str1>>str2;str=str1;str3=str2;
reverse(str1.begin(),str1.end());
reverse(str2.begin(),str2.end());
if(str1.size()<str2.size())
swap(str1,str2);
for(i=0;i<str2.size();i++)
{
s=(str1[i]-'0')+(str2[i]-'0');//将string转化为int型
if(s<10)
str1[i]=s+'0';
else
{
str1[i]=(s%10)+'0';
str1[i+1]+=1;
}
}
reverse(str1.begin(),str1.end());
cout<<"Case "<<j<<":"<<endl;
cout<<str<<" + "<<str3<<" = "<<str1<<endl;
if(j!=n)
{
cout<<endl;
}
}
return 0;
}