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

各要素がN以下になるような一意のペアを見つけるC++プログラム


この記事では、N以下の要素を持ち、いくつかの特定の条件に従う一意の数のペアを見つけるプログラムについて説明します-

  • 2つの数値の差の二乗は、これら2つの数値のLCMと等しくなければなりません。

  • これらの2つの数値のHCFは、任意の2つの連続する数値の積として表すことができます。

この問題を解決するための最良のアプローチは、2つの連続した数(1から開始)を取り、それらの数の積の倍数を見つけることです。次に、倍数の中で、1つのペアの数値を指定するには、ペアの数値が最初に指定された条件を満たすかどうかを確認する必要があります。

たとえば、2と3の場合を考えます。それらの積は6になります。6の倍数を続けると、6、12、18、24になります…一度に2つの数値を取ると、 2つの連続する数値(この場合は36)の差の二乗は、それらの数値のLCMに等しくなります。この場合、最終的にペアは12と18になります。

方程式を一般化すると、2つの数値はZ *(Z *(Z + 1))と(Z + 1)*(Z *(Z + 1))になります。ここで、ZはHCF(連続するペア)の最初の数値です。製品)。

最後に、値がN未満であるという条件を使用して、次のようになります

(Z + 1)*(Z *(Z + 1))<=NまたはZ 3 +(2 * Z 2 )+ Z<=N。

#include <iostream>
using namespace std;
int main() {
   int N = 489, pairs, i = 1;
   //counting the number of pairs having elements less than N
   while((i*i*i) + (2*i*i) + i <= N) {
      i++;
   }
   pairs = i;
   cout << "Pairs :" << endl;
   //printing the two elements of the pair
   for(int j = 1; j < pairs; j++) {
      cout << j*(j*(j+1)) << " " << (j+1)*(j*(j+1)) << endl;
   }  
   return 0;
}

出力

Pairs :
2 4
12 18
36 48
80 100
150 180
252 294
392 448

  1. 各単語が回文であるように単語を分割する方法の数を見つけるためのC++プログラム

    ここでは、各単語が回文になるように単語を分割するいくつかの方法を見つけるためのC++プログラムについて説明します。 アルゴリズム Begin    Take the word as input.    Function partitionadd(vector<vector<string> > &u, string &s, vector<string> &tmp, int index):    if (index == 0)       tmp.c

  2. 2つの数値を交換するC++プログラム

    2つの数値を交換するプログラムを作成する方法は2つあります。 1つは一時変数を使用することを含み、2番目の方法は3番目の変数を使用しません。これらは次のように詳細に説明されています- 一時変数を使用して2つの数値を交換するプログラム 一時変数を使用して2つの数値を交換するプログラムは次のとおりです。 例 #include <iostream > using namespace std; int main() {    int a = 10, b = 5, temp;    temp = a;    a = b; &nbs