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

C ++でキューブの合計がN(a ^ 3 + b ^ 3 =N)であるペア(a、b)をカウントします


数Nが与えられます。目標は、それらの立方体の合計がNになるような正の数の順序対を見つけることです。

これを行うには、方程式a 3 の解を見つけます。 + b 3 =N。ここで、aはNの立方根以下であり、bは(N-a 3 の立方根として計算できます。 。

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

入力

N=35

出力

Count of pairs of (a,b) where a^3+b^3=N: 2

説明

Pairs will be (2,3) and (3,2). 23+33=8+27=35

入力

N=100

出力

Count of pairs of (a,b) where a^3+b^3=N: 0

説明

No such pairs possible.

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数Nを取ります。

  • 関数cubeSum(int n)はnを取り、キューブの合計をnとして順序対の数を返します。

  • ペアの初期変数カウントを0とします。

  • forループを使用してトラバースし、を見つけます。

  • a=1からnの立方根であるa<=cbrt(n)まで開始します。

  • bの3乗をn-pow(a、3)として計算します。

  • bをcbrt(bcube)として計算します

  • pow(b、3)==bcubeの場合。カウントを1ずつインクリメントします。

  • すべてのループの終わりに、カウントにはそのようなペアの総数が含まれます。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int cubeSum(int n){
   int count = 0;
   for (int a = 1; a < cbrt(n); a++){
      int bcube=n - (pow(a,3));
      int b = cbrt(bcube);
      if(pow(b,3)==bcube)
         { count++; }
   }
   return count;
}
int main(){
   int N = 35;
   cout <<"Count of pairs of (a,b) where a^3+b^3=N: "<<cubeSum(N);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of pairs of (a,b) where a^3+b^3=N: 2

  1. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with

  2. 合計がC++の指定された値xに等しい2つのBSTからペアをカウントします

    入力として2つの二分探索木と変数xが与えられます。目標は、ノードの値の合計がxに等しくなるように、各ツリーからノードのペアを見つけることです。 BST_1からノード1を取得し、BST_2からノード2を取得して、両方のデータ部分を追加します。 sum=xの場合。インクリメントカウント。 例を挙げて理解しましょう。 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 1 説明 −ペアは(8,6) 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 2 説明 −ペアは(5,15)と(4,16) 以下のプログラムで使用されているアプ