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

C ++で二乗和がN(a ^ 2 + b ^ 2 =N)であるペア(a、b)をカウントします


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

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

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

入力

N=100

出力

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

説明

Pairs will be (6,8) and (8,6). 62+82=36+64=100

入力

N=11

出力

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

説明

No such pairs possible.

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

  • 整数Nを取ります。

  • 関数squareSum(int n)はnを取り、二乗和をnとして順序対の数を返します。

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

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

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

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

  • bをsqrt(bsquare)として計算します

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

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

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

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

出力

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

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

  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) 以下のプログラムで使用されているアプ