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

C ++でそれらの合計がSであり、XORがKであるように、正の数の順序対をカウントします。


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

これを行うには、i=1からi

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

入力

S=10 K=4

出力

Ordered pairs such that sum is S and XOR is K: 2

説明

Pairs will be (3,7) and (7,3)

入力

S=12 K=6

出力

Ordered pairs such that sum is S and XOR is K: 0

説明

No such pairs possible.

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

  • 整数SとKを取ります。

  • 関数sumXOR(int s、int k)はsとkを取り、sum=sとxor=kの順序対の数を返します

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

  • ペアを作成するために2つのforループを使用してトラバースします。

  • i=1からi

  • 次に、各ペア(i、j)について、(i + j ==s)&&(i ^ j ==k)かどうかを確認します。 (i、j)と(j、i)の両方が異なるペアであるため、真の増分が2ずつカウントされる場合。

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

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

#include <bits/stdc++.h>
using namespace std;
int sumXOR(int s, int k){
   int count = 0;
   for (int i = 1; i < s; i++){
      for(int j=i+1; j<s-1; j++){
         if( (i+j)==s && (i^j)==k){
            count+=2; //(i,j) and (j,i) are two pairs
         }
      }
   }
   return count;
}
int main(){
   int S = 9, K = 5;
   cout <<"Ordered pairs such that sum is S and XOR is K: "<< sumXOR(S,K);
   return 0;
}

出力

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

Ordered pairs such that sum is S and XOR is K: 4

  1. XORがC++の「x」と等しくなるように、4つの配列からすべてのQuadrupleをカウントします

    このチュートリアルでは、XORがxに等しくなるように4つの配列から4つ組の数を見つけるプログラムについて説明します。 このために、4つの配列と値xが提供されます。私たちのタスクは、XORが指定された値xに等しいすべての4倍をカウントすることです。 例 #include<bits/stdc++.h> using namespace std; //counting quadruples with XOR equal to x int count_quad(int a[], int b[], int c[], int d[], int x, int n){    i

  2. C ++を使用して、XORが0になるような配列内のペアの数を見つけます。

    n個の要素の配列があるとします。 XORが0になる配列内のペアの数を見つける必要があります。XORが0のペア(x​​、y)の場合、x=yです。これを解決するために、配列を並べ替えることができます。次に、2つの連続する要素が同じである場合は、カウントを増やします。すべての要素が同じである場合、最後のカウントはカウントされない場合があります。その場合、最後の要素と最初の要素が同じであるかどうかを確認し、同じである場合は、カウントを1つ増やします。 例 #include<iostream> #include<algorithm> using namespace std; in