21xrx.com
2024-09-20 00:48:06 Friday
登录
文章检索 我的文章 写文章
C++超长整数加法
2023-06-28 15:24:21 深夜i     --     --
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函数逐一按位相加,如果有进位,则在下一位相加时加上。最后,我们将结果存放在一个字符串中,并返回该字符串。

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章