21xrx.com
2025-03-24 22:19:17 Monday
文章检索 我的文章 写文章
C++超长整数加法
2023-06-28 15:24:21 深夜i     16     0
C++ 超长整数 加法 大数运算 精度计算

在C++中,整数相加很简单,只需使用+运算符即可。但是,如果要对较长的整数进行加法计算,会遇到超出数据类型范围的问题。例如,如果要计算两个100位的整数相加,就不能使用int或long类型。此时,我们需要使用超长整数加法来解决问题。

超长整数加法是将两个较长的整数按照位数逐一相加的一种算法。具体来说,我们需要将两个长整数转换为字符串,然后再按照位数相加,最后将结果转换为长整数类型并输出。

以下是一份简单的C++代码,演示了如何使用超长整数加法:

#include <iostream>
#include <string>
using namespace std;
// 定义两个较长的整数
string num1 = "123456789012345678901234567890";
string num2 = "987654321098765432109876543210";
// 超长整数相加函数
string add(string s1, string s2) {
  string res = ""; // 存放结果
  int carry = 0; // 存放进位
  // 从个位数开始相加
  for (int i = s1.size() - 1, j = s2.size() - 1; i >= 0 || j >= 0; i--, j--) {
    int a = i >= 0 ? s1[i] - '0' : 0; // 如果i已经到头,就将a设为0
    int b = j >= 0 ? s2[j] - '0' : 0; // 如果j已经到头,就将b设为0
    int sum = a + b + carry; // 相加并加上进位
    carry = sum / 10; // 进位为0或1
    res = to_string(sum % 10) + res; // 记录当前位的结果
  }
  if (carry) res = "1" + res; // 如果最高位有进位,需要在最前面加上1
  return res;
}
int main() {
  cout << add(num1, num2) << endl; // 输出相加结果
  return 0;
}

在上面的代码中,我们定义了两个较长的整数num1和num2,然后调用add函数进行相加。add函数逐一按位相加,如果有进位,则在下一位相加时加上。最后,我们将结果存放在一个字符串中,并返回该字符串。

最后,我们再将结果转换为长整数类型并输出。这样,我们就成功地使用超长整数加法计算了两个较长的整数的和。

  
  

评论区

请求出错了