C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で2つの数値を加算するために必要なキャリー操作の数を数えます


num_1とnum_2の2つの番号が与えられます。目標は、数が加算された場合に必要なキャリー操作の数をカウントすることです。数値が123および157の場合、キャリー操作は1になります(7 + 3 =10、1 + 2 + 5 =8、1 + 1 =2)。

例を挙げて理解しましょう

入力 − num_1 =432 num_2 =638

出力 − 2つの数値を加算するために必要なキャリー操作の数は− 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

出力 − 2つの数値を加算するために必要なキャリー操作の数は− 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として2つの数字を取ります。

  • 関数carry_add_two_numbers(num_1、num_2)は、両方の数値を受け取り、両方が追加されたときに必要なキャリーの数を返します。

  • to_string(x)を使用して両方の数値を文字列に変換し、str_1とstr_2に格納します。

  • lenght_str_1およびlength_str_2としてlength()を使用して、両方の文字列の長さを取得します。

  • 初期カウントを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

  1. C++で順列を推測するために必要な移動の数

    数Nが与えられた場合、最悪のシナリオで順列を推測するために必要な動きを見つける必要があります。順列を推測するために必要な移動の数はn!になります。例を見てみましょう。 入力 5 出力 129 5つの要素がある場合、5つの推測方法があり、4つの要素があり、1まで続く場合は4つの方法があります。 アルゴリズム 番号nを初期化します。 カウントを1に初期化します。 1からnまで繰り返すループを作成します。 カウントに現在の数値を掛けます。 カウントを返します。 実装 以下は、C++での上記のアルゴリズムの実装です #include <bits/stdc++.h> us

  2. C ++を使用してOpenCVの面の数を数える方法は?

    画像内にある顔の数を数えるのは簡単です。前のセクションで作成したプログラムには、「faces.size()」の面の数に関する情報がすでに含まれています。このコード-faces.size()は整数値を与えます。 たとえば、「int x =faces.size()」と書くと、「x」には面の数が含まれます。 次のプログラムは、特定の画像から顔の数を計算し、コンソールウィンドウに表示します。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/objdetect/obj