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

C++でビット単位または最大値未満のペアをカウントします


整数配列が与えられ、タスクは、与えられた配列値を使用して形成できるペアの総数をカウントし、ペアに対するOR演算が次の値になるようにすることです。指定されたペアのMAX値未満です。

OR演算の真理値表を以下に示します

A B AVB
0 0 0
1 0 1
0 1 1
1 1 1

入力 − int arr [] ={2、5、1、8、9}

出力 −ビット単位のORがMax未満のペアの数は− 3

説明

X Y X V Y
2 5 7> 5 =FALSE
2 1 3> 2 =FALSE
2 8 10> 8 =FALSE
2 9 11> 9 =FALSE
5 1 5 =5 TRUE
5 8 13> 8 =FALSE
5 9 13> 9 =FALSE
1 8 9> 8 =FALSE
1 9 10> 9 =FALSE
8 9 9 =9 =TRUE
以下のプログラムで使用されているアプローチは次のとおりです
  • 整数要素の配列を入力してペアを形成します

  • 配列のサイズを計算し、さらに処理するためにデータを関数に渡します

  • 一時変数カウントを作成して、ペアの中でMAX値以下の値を持つOR演算で形成されたペアを格納します

  • 配列のサイズ1までiから0までのループFORを開始します

  • ループ内で、配列のサイズになるまでjからi+1までの別のループFORを開始します

  • ループ内で、IF arr[i]|を確認します。 arr [j] <=max(arr [i]、arr [j])次に、カウントを1ずつ増やします

  • カウントを返す

  • 結果を印刷します。

#include <bits/stdc++.h>
using namespace std;
//Count pairs with bitwise OR less than Max
int Pair_OR(int arr[], int size){
   int count = 0;
   for (int i = 0; i lt; size - 1; i++){
      for (int j = i + 1; j lt; size; j++){
         if ((arr[i] | arr[j]) lt;= max(arr[i], arr[j])){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 4, 8, 9, 10, 23};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs with bitwise OR less than Max are: "<<Pair_OR(arr, size);
   return 0;
}

出力

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

Count of pairs with bitwise OR less than Max are − 3

  1. C++でkに等しい差を持つすべての異なるペアをカウントします

    このチュートリアルでは、差がkに等しい個別のペアを見つけるプログラムについて説明します。 このために、整数配列と値kが提供されます。私たちのタスクは、差がkであるすべての個別のペアをカウントすることです。 例 #include<iostream> using namespace std; int count_diffK(int arr[], int n, int k) {    int count = 0;    //picking elements one by one    for (int i = 0; i <

  2. C++でbよりも大きいプレフィックス

    この問題では、strをn回追加することによって文字列が作成されるように、aとbおよび整数Nのみを含む文字列strが与えられます。私たちのタスクは、aの数がbの数よりも多い部分文字列の総数を出力することです。 問題を理解するために例を見てみましょう Input: aab 2 Output: 9 Explanation: created string is aabaab. Substrings with count(a) > count(b) : ‘a’ , ‘aa’, ‘aab’, ‘aaba&rsquo