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 }

     运行结果如下:

     

  • 相关阅读:
    Linux之文件处理命令
    Linux基础命令
    rip实验
    Linux基础之磁盘分区
    mysql安装
    centos Apache、php、mysql默认安装路径
    You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
    Wrong permissions on configuration file, should not be world writable!
    机器会学习么 学习总结
    实验 5 Spark SQL 编程初级实践
  • 原文地址:https://www.cnblogs.com/smile233/p/8715810.html
Copyright © 2011-2022 走看看