hdu1002 求大数和

本是古典 何须时尚 2022-06-16 11:13 319阅读 0赞
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int t;
  6. cin>>t;
  7. for(int j=0;j<t;j++)
  8. {
  9. cout<<"Case "<<j+1<<":"<<endl;
  10. string a="";
  11. string b="";
  12. cin>>a>>b;
  13. string c;
  14. int flag=0;
  15. int len=a.length()>b.length()?b.length():a.length();//选最小长度
  16. /*求公共部分和*/
  17. for(int i=a.length()-1,k=b.length()-1,n=0;n<len;i--,k--,n++)
  18. {
  19. if(a[i]-'0'+b[k]-'0'+flag>9)
  20. {
  21. c+=(a[i]-'0'+b[k]-'0'+flag)%10+'0';
  22. flag=1;
  23. }
  24. else{
  25. c+=(a[i]-'0'+b[k]-'0'+flag)+'0';
  26. flag=0;
  27. }
  28. }
  29. //将较长的数字的多余部分加到和中
  30. if(len==b.length())
  31. {
  32. for(int i=a.length()-len-1;i>=0;i--)
  33. {
  34. if(a[i]+flag-'0'>9)
  35. {
  36. c+='0';
  37. flag=1;
  38. }else{
  39. c+=a[i]+flag;
  40. flag=0;
  41. }
  42. }
  43. }else if(len==a.length()){
  44. for(int i=b.length()-len-1;i>=0;i--)
  45. {
  46. if(b[i]+flag-'0'>9)
  47. {
  48. c+='0';
  49. flag=1;
  50. }else{
  51. c+=b[i]+flag;
  52. flag=0;
  53. }
  54. }
  55. }
  56. else{
  57. }
  58. //字符串反转得到结果输出
  59. string sum;
  60. for(int i=c.length()-1;i>=0;i--)
  61. {
  62. sum+=c[i];
  63. }
  64. cout<<a<<" + "<<b<<" = "<<sum<<endl;
  65. if(j==t-1)
  66. {
  67. }else{
  68. cout<<endl;
  69. }
  70. }
  71. return 0;
  72. }

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读