計算在 C++ 中新增兩個數字所需的進位運算次數


給定兩個數字 num_1 和 num_2。目標是計算如果將這些數字相加所需的進位運算次數。如果數字是 123 和 157,則進位運算次數為 1。(7+3=10,1+2+5=8,1+1=2)。

讓我們透過示例來理解

輸入 − num_1=432 num_2=638

輸出 − 新增兩個數字所需的進位運算次數為 − 2

解釋 − 從右到左加數字並計算進位 −

(2+9=10, carry 1 ) count=1,
(1+3+3=7, carry 0 ) count=1,
(4+6=10, carry 1 ) count=2

輸入 − num_1=9999 num_2=111

輸出 − 新增兩個數字所需的進位運算次數為 − 4

解釋 − 從右到左加數字並計算進位 −

(9+1=10, carry 1 ) count=1,
(1+9+1=11, carry 1 ) count=2,
(1+9+1=11, carry 1 ) count=3,
(1+9=10, carry 1) count=4

下面程式中使用的方法如下:

我們將把這兩個數字轉換為字串。從末尾開始遍歷字串,將字元轉換為整數,將兩者以及之前的進位(第一次迭代為 0)相加,如果值 > 10,則將進位設定為 1。如果進位為 1,則增加進位計數。

  • 將兩個數字作為 num_1 和 num_2。

  • 函式 carry_add_two_numbers(num_1, num_2) 獲取這兩個數字並返回兩者相加時所需的進位計數。

  • 使用 to_string(x) 將兩個數字轉換為字串,並存儲在 str_1 和 str_2 中。

  • 使用 length() 獲取兩個字串的長度,分別為 lenght_str_1 和 length_str_2。

  • 將初始計數設定為 0,初始進位也設定為 0。

  • 當兩個長度都不為零時。

  • 繼續將最後一個字元轉換為整數,並將整數儲存在變數 i 和 j 中。

  • 減少兩個字串的長度。

  • 獲取要相加的變數,為 i+j+carry。

  • 如果 add > 10,則遞增計數(因為它是進位)。並將 cary 設定為 1。否則,為下一次迭代將 carry 設定為 0。

  • 所有迭代結束後,計數將包含進位的總數。

  • 返回計數作為結果。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int carry_add_two_numbers(int num_1, int num_2){
   string str_1 = to_string(num_1);
   int length_str_1 = str_1.length();
   string str_2 = to_string(num_2);
   int length_str_2 = str_2.length();
   int count = 0, carr = 0;
   while(length_str_1 != 0 || length_str_2 != 0){
      int i = 0, j = 0;
      if (length_str_1 > 0){
         i = str_1[length_str_1 - 1] - '0';
         length_str_1--;
      }
      if (length_str_2 > 0){
         j = str_2[length_str_2 - 1] - '0';
         length_str_2--;
      }
      int add = i + j + carr;
      if (add >= 10){
         carr = 1;
         count++;
      }
      else{
         carr = 0;
      }
   }
   return count;
}
int main(){
   int num_1 = 234578;
   int num_2 = 1234;
   int count = carry_add_two_numbers(num_1, num_2);
   cout<<"Count of number of carry operations required to add two numbers are: "<<count;
   return 0;
}

輸出

如果我們執行上述程式碼,它將生成以下輸出:

Count of number of carry operations required to add two numbers are: 2

更新於:2020-12-02

2K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告