杭电oj——1002 A + B Problem II

来源:互联网 发布:正版广联达预算软件 编辑:程序博客网 时间:2024/06/04 18:58

题目 :    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;}



0 0
原创粉丝点击