hdu 1002大数相加
2014-05-22 13:10
423 查看
大数相加问题:由于数的长度过大,一般的数据类型根本存不了,所以这里用到了用数组模拟大数,从而进行相加的办法解决。
</pre><p><pre name="code" class="cpp">#include<stdio.h> #include<iostream> #include<string> #include<algorithm> using namespace std; string add(string st1,string st2) { if(st1.size()<st2.size()) //判断哪个长 { string stemp=st1; st1=st2; st2=stemp; } reverse(st1.begin(),st1.end()); //将string类st1,st2逆转顺序 reverse(st2.begin(),st2.end()); int len1,len2; len1=st1.length(); //计算各自的长度 len2=st2.length(); int in=0,num; //进位in初始化为0 for(int i=0; i<len2; i++) { num=st1[i]-'0'+st2[i]-'0'+in; //各位的和 in=num/10; num%=10; st1[i]=num+'0'; //放入较长的string里 } for(int j=len2; j<len1; j++) //如果遇到例如123 99892这样的样例,123处理完后需要向前边进位 { num=st1[j]-'0'+in; in=num/10; num%=10; st1[j]=num+'0'; // cout<<in<<" "<<st1<<endl; } if(in==1) //相加的结果比原有的string都长 st1+="1"; reverse(st1.begin(),st1.end()); return st1; } int main() { string str1,str2; int t; cin>>t; int n=0; while(t--) { cin>>str1>>str2; if(n) cout<<endl; cout<<"Case "<<++n<<":"; cout<<endl<<str1<<" + "<<str2<<" = "; cout<<add(str1,str2)<<endl; } return 0; }
相关文章推荐
- HDU 1002 A + B Problem II 大数相加
- hdu1002-大数相加
- HDU1002 大数相加
- HDU 1002 A + B Problem II 大数相加
- HDU 1002:A + B Problem II(大数相加)
- HDU1002 大数相加
- HDU 1002 A+B Problem II 大数相加
- hdu1002 a+bII 大数相加
- HDU 1002(大数相加)
- [ACM]hdu 1002 A + B Problem II (复习大数相加)
- hdu 1002 A + B Problem II(大数相加)
- HDU 1002 A + B Problem II 大数相加
- [ACM]hdu 1002 A + B Problem II (复习大数相加)
- (大数相加)HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II 【大数相加】(3.16)
- hdu 1002 大数相加
- hdu--1002 大数相加 (连起来相加很容易,分开为啥错了?)
- HDU 1002 A + B Problem II(两个大数相加)
- hdu 1002 A + B Problem II(大数相加)
- HDU-1002-大数相加