HDU1002A+BProblemIIC++解法
一开始我是用char 数组做的,但是后来觉得好麻烦,于是就用string对象来做,毕竟C++本来就是OOP语言
不多说,直接上代码:
#include
#include
using namespace std;
string sum(string &s1,string &s2)
{
if(s1==””&&s2==””)
return “0”;
if(s1==””)
return s2;
if(s2==””)
return s1;
string max,min;
int lens1=s1.length();
int lens2=s2.length();
if(lens1<lens2)
{
max=s2;
min=s1;
}
else
{
max=s1;
min=s2;
}
int maxlen=max.length();
int minlen=min.length();
int i,j;
for(i=maxlen-1,j=minlen-1;j>=0;j–,i–)
max[i]=max[i]+min[j]-‘0’;//加起来之后的数存到相应的max[i]中
for(i=maxlen-1;i>0;i–)//检测max中每一位的值,除了最前面的那一位
{
if(max[i]>’9’)
{
max[i]=max[i]-10;
max[i-1]+=1;//进位
}
}
if(max[0]>’9’)//检测第一位
{
max[0]=max[0]-10;//记得换掉max[0]的值
max=”1”+max;//这里”1”或者’1’都可以
}
return max;
}
void main()
{
int num;
cin>>num;
int i=1;
int count=num;
while(num)//我只想说,格式是硬伤,没注意输出格式,愣是花多了半个多小时去调程序
{
string s1,s2;
cin>>s1>>s2;
cout<<”Case “<<i<<”:”<<endl;
cout<<s1<<” + “<<s2<<” = “<<sum(s1,s2)<<endl;//“ + ”前后是有空格的
if(i<count)
cout<<endl;
num–;
i++;
//cout<<sum(s1,s2)<<endl;
}
}
HDU要看清楚格式输出的要求,否则坑底你别叫!!!
- 本文作者: royalchen
- 本文链接: http://www.royalchen.com/2016/02/24/hdu1002abproblemiic解法/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!