在 C++ 中求兩個大數的和


在這個問題中,我們給出了兩個字串,定義了兩個大數。我們的任務是建立一個程式來找到兩個大數的和。

我們舉個例子來理解這個問題,

Input: number1 = “341299123919”
number2 = “52413424”
Output: 341351537343

為了解決這個問題,我們將遍歷這兩個字串。並按位數相加並傳遞進位。並將結果按位數儲存在和字串中。

演算法

Initialize sum = 0, carry = 0.
Step 1: loop from n to 0.
Step 1.1: intSum = number1[i] + number2[i]
Step 1.2: carry = intSum/10. Sum += intSum
Step 2: sum += carry.
Step 3: return sum.

例項

程式來說明我們解決方案的工作原理,

#include<bits/stdc++.h>
using namespace std;
string addBigNumbers(string number1, string number2) {
   if (number1.length() > number2.length())
    swap(number1, number2);
   string sum = "";
   int len1 = number1.length();
   int len2 = number2.length();
   int digitDiff = len2 - len1;
   int carry = 0;
   int intSum;
   for (int i=len1-1; i>=0; i--) {
      intSum = ((number1[i]-'0') + (number2[i+digitDiff]- '0') + carry);
      sum.push_back(intSum%10 + '0');
      carry = intSum/10;
   }
   for (int i=digitDiff-1; i>=0; i--) {
      intSum = ((number2[i]-'0')+carry);
      sum.push_back(intSum%10 + '0');
      carry = intSum/10;
   }
   if (carry)
    sum.push_back(carry+'0');
   reverse(sum.begin(), sum.end());
   return sum;
}
int main() {
   string number1 = "235235823852";
   string number2 = "45230820348";
   cout<<"Sum of two large numbers is "<<addBigNumbers(number1,x number2);
   return 0;
}

輸出

Sum of two large numbers is 280466644200


更新於:17-Aug-2020

4 千次瀏覽

開啟你的 職業

完成課程,獲得認證

開始
廣告
© . All rights reserved.