zoukankan      html  css  js  c++  java
  • 大整数求和

    大整数求和

      摘要:对于一些大整数,如果超出电脑整型数所能表示的最大范围,应该怎么计算加法呢?我们可以利用字符串进行求和,具体代码如下:

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 string Add(string &str1, string &str2);
     5 int main()
     6 {
     7     string str1, str2;
     8     cin >> str1 >> str2;
     9     cout << Add(str1, str2) << endl;
    10  }
    11 
    12 string Add(string & str1, string & str2)
    13 {
    14     int flag = 0;  // 进位标记
    15     int i = 0; // 位数
    16     int n = str1.size();
    17     int m = str2.size();
    18     // 整数是从最低位开始相加,所以先将字符串反序
    19     reverse(str1.begin(), str1.end());
    20     reverse(str2.begin(), str2.end());
    21     string res = "";// 存放结果的串
    22     while (i < n && i < m)
    23     {        
    24         res+=(((str1[i] - '0') + (str2[i] - '0') + flag) % 10 + '0');// 计算第i位的值
    25         flag = ((str1[i] - '0') + (str2[i] - '0') + flag) / 10;    // 计算第i位的进位
    26         i++;
    27     }
    28     // 如果str1表示的整数位数更多,计算大整数str1余下的部分
    29     while (i < n)
    30     {    
    31         res+= (((str1[i] - '0') + flag) % 10 + '0');// 计算第i位的值
    32         flag = ((str1[i] - '0') + flag) / 10;    // 计算第i位的进位
    33         i++;
    34     }
    35     // 如果str2表示的整数位数更多,计算大整数str2余下的部分
    36     while (i < m)
    37     {        
    38         res+= (((str2[i] - '0') + flag) % 10 + '0');// 计算第i位的值
    39         flag = ((str2[i] - '0') + flag) / 10;    // 计算第i位的进位
    40         i++;
    41     }
    42     // 最高位是否有进位,设置最高位的值44     if (flag == 1)
    45         res+= '1';
    46     // 反序结果串,结果即为所求
    47     reverse(res.begin(), res.end());
    48     return res;
    49 }

     运行结果如下:

     

  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/smile233/p/8715810.html
Copyright © 2011-2022 走看看