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

キャリーを伝播せずに2つの数字を加算しますか?


ここでは、2つのn桁の数値を追加するが、キャリーが伝搬されないという1つの問題が発生します。この概念は例を通して理解できます-

キャリーを伝播せずに2つの数字を加算しますか?

したがって、ここでは数字のみが追加され、回答が配置されていることがわかります。ここに1つのトリックがあります。数字を右から左にスキャンする必要があります。したがって、3 + 2 =6の合計が最初に計算されますが、最後に配置されます。したがって、スタックを使用して中間結果を保存します。

アルゴリズム

noPropagateCarry(a、b)

begin
   size = max of length of a and length of b
   for i in range i to size, do
      al := last digit of a
      bl := last digit of b
      push (al + bl) into stack
      a := a / 10
      b := b /10
   done
   pop and print the elements from stack
end

#include<iostream>
#include<stack>
#include<cmath>
using namespace std;
int length(int n){
   return log10(n) + 1;
}
void noPropagateCarry(int a, int b){
   int size = max(length(a), length(b));
   stack<int> stk;
   for(int i = 0; i <size; i++){
      int al = a % 10; //last digit of a
      int bl = b % 10; //last digit of b
      stk.push(al + bl);
      a = a / 10; b = b/10;
   }
   while(!stk.empty()){
      cout << stk.top();
      stk.pop();
   }
}
main() {
   int a = 7583, b = 9642;
   cout << "Result: ";
   noPropagateCarry(a, b);
}

出力

Result: 1611125

  1. C#で一時変数を使用せずに2つの数値を交換する方法

    2つの数値を交換するには、3番目の変数を使用し、一時変数を使用せずに算術演算子を実行します。 スワッピング用に2つの変数を設定します- val1 = 5; val2 = 10; 次に、スワップに対して次の操作を実行します- val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2; 例 using System; namespace Demo {    class Program {       static void Main(string[] args) {   &

  2. 2つの数値を追加するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 2つの大きな数が与えられ、それらを追加して出力を表示する必要があります。 ブルートフォースアプローチでは、オペランド間に「+」演算子を使用するか、2つの数値を反復可能に格納して、Python標準ライブラリで使用可能な組み込みのsum関数を使用できます。 このアプローチでは、計算が10進数で直接行われるため、時間計算量が増加します。 次に、10進数のビットを処理する別のアプローチについて説明します。 ここでは、合計とキャリーを計算する加算器の概念を使用します。 それでは、実装を見