C++でX以下の要素を持つサブ配列をカウントします
整数と変数Xを含む配列arr[]が与えられます。目標は、各サブ配列にX以下の要素のみが含まれるようにarr []のすべてのサブ配列をカウントすることです。たとえば、配列が[1、 2,3]およびX=2の場合、サブ配列は[1]、[2]、および[1,2]
になります。例を挙げて理解しましょう。
入力 − arr [] ={4,3,2,1,6}; X =3
出力 − X以下の要素を持つサブ配列の数は− 6
説明 − Subaaraysは−
[3], [2], [1], [3,2], [2,1], [3,2,1]
入力 − arr [] ={3,6,2,7,1,8,5}; X =5
出力 − X以下の要素を持つサブ配列の数は− 4
説明 − Subaaraysは−
[3], [2], [1], [5]
以下のプログラムで使用されているアプローチは次のとおりです
元の配列arr[]と同じサイズのバイナリ配列temp_arr[]を作成しています。このバイナリ配列は、対応するarr [i]がX以下の場合は1、それ以外の場合は0になります。ここでtemp_arr []をトラバースし、連続1(arr []のX未満の要素)をチェックします。そのような各サブアレイの長さをtempに格納します。長さtempの配列の場合。サブアレイの合計はtemp*(temp + 1)/2になります。これを合計数に追加し、temp_arr[]の終わりまで続けます。
-
配列arr[]と変数Xを取ります。
-
関数sub_X(int arr []、int size、int x)は、配列とxを受け取り、x以下の要素のみを含むサブ配列の数を返します。
-
一時変数tempと、カウントなどのサブ配列の最終合計を取得します。
-
arr[]と同じ長さのバイナリ配列temp_arr[]を取ります。
-
forループを使用して配列arr[]をi=0からi
-
各要素arr[i]<=xについて、temp_arr [i] =1、それ以外は0に設定します。
-
forループを使用してtemp_arr[]をトラバースします。
-
要素temp_arr[i]==1.の場合、現在のインデックスiからtemp_arr [temp_2](temp_2 =i + 1; temp_2
-
すべて1のサブ配列の数は、temp=temp_2-iになります。
-
このサブ配列にはすべて1があります。これは、arr[i]のすべての要素が<=xであることを意味します。サブ配列の合計は、temp_3 =temp *(temp + 1)/2になります。
-
両方のトラバーサルの終了時に、カウントには、x以下の数を持つarr内のすべてのサブアレイのカウントの総数が含まれます。
例
#include <iostream> using namespace std; int sub_X(int arr[], int size, int x){ int count = 0, temp = 0; int temp_arr[size]; for (int i = 0; i < size; i++){ if (arr[i] <= x){ temp_arr[i] = 1; } else{ temp_arr[i] = 0; } } for (int i = 0; i < size; i++){ if (temp_arr[i] == 1){ int temp_2; for(temp_2 = i + 1; temp_2 < size; temp_2++){ if(temp_arr[temp_2] != 1){ break; } } temp = temp_2 - i; int temp_3 = (temp) * (temp + 1)/2; count = count + temp_3; i = temp_2; } } return count; } int main(){ int arr[] = { 2, 6, 1, 10, 5, 3 }; int x = 4; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of sub-arrays which have elements less than or equal to X are: "<<sub_X(arr, size, x); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of sub-arrays which have elements less than or equal to X are: 3
-
C++で指定された数以下の最大の特殊素数を検索します
数nがあるとします。 N以下の最大の特別な素数を見つける必要があります。特別な素数は数字であり、数字を次々に配置することで作成できるため、結果の数字はすべて素数になります。 ここでは、エラトステネスのふるいを使用します。数nまでのふるい配列を作成します。次に、数が素数であるかどうかを確認することにより、数Nから繰り返し開始します。これが素数の場合、これが特別な素数であるかどうかを確認します。 例 #include<iostream> using namespace std; bool isSpecialPrime(bool sieve[], int num) { &
-
C++でn以下のすべての階乗数を検索します
ここでは、n以下のすべての階乗数を出力する方法を説明します。数値Nは、正の数の階乗である場合、階乗数と呼ばれます。したがって、いくつかの階乗数は1、2、6、24、120です。 階乗数を印刷するために、階乗を直接見つける必要はありません。 i =1から始めて、階乗*iを出力します。最初は階乗は1です。理解を深めるためにコードを見てみましょう。 例 #include <iostream> using namespace std; void getFactorialNumbers(int n) { int fact = 1; int