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

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){
   int count = 0;
   for (int i = 0 ; i < n ; i++)
      for (int j = 0 ; j < n ; j++)
         for (int k = 0 ; k < n ; k++)
            for (int l = 0 ; l < n ; l++)
               if ((a[i] ^ b[j] ^ c[k] ^ d[l]) == x)
                  count++;
   return count;
}
int main(){
   int x = 3;
   int a[] = {0, 1};
   int b[] = {2, 0};
   int c[] = {0, 1};
   int d[] = {0, 1};
   int n = sizeof(a)/sizeof(a[0]);
   cout << count_quad(a, b, c, d, x, n) << endl;
   return 0;
}

出力

4

  1. n XOR n+1がC++で指定されたkと等しくなるような最小数nを見つけます

    正の数kがあるとします。 nとn+1のXORがkと同じになるように、正の数nを見つける必要があります。したがって、k =7(111)の場合、出力は3になります。3(011)、3 + 1 =4(100)として、011 XOR 100 =111(7) 考えられるケースは2つあります。 nが偶数であると考えてください。 n=0の最後のビット。次にn+1=1の最後のビット。残りのビットは同じです。したがって、nが奇数の場合、XORは1になり、最後のビットは1になり、n + 1ビットの最後のビットは0になります。ただし、この場合、キャリーによって異なるビットが増えます。キャリーは、最初の0ビットを取得

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

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