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

C++の配列のすべての可能なペアの合計のXOR


この問題では、n個の要素の配列が与えられます。私たちのタスクは、サイズn * nのシーケンスを生成することです。その要素は、Aのすべての要素とそれ自体のペアの合計です。そして、形成されたこの合計配列のxor要素を出力します。

問題を理解するために例を見てみましょう

入力 − A(1、4、5)

出力 − 0

説明

B (1+1, 1+4, 1+5, 4+1, 4+4, 4+5, 5+1, 5+4, 5+5)
B(2,5,6,5,8,9,6,9,10)
Xor of all values = 2^5^6^5^8^9^6^9^10 = 0.

この問題を解決するには、Xorのいくつかのプロパティを知る必要があります。同じ数の数の最初のXORは0です。これで、新しく形成された配列には、同じである複数の要素があります。要素 a [i] + a [j] とa[j]+ a [i]は同じであるため、それらのxorは0になります。したがって、2a [i]要素のみが残るので、すべてのa [i]要素のxorを取得し、これに乗算します。 2。これが最終的な答えになります。

アルゴリズムの実装を示すプログラム

#include <iostream>
using namespace std;
int findSumXor(int arr[], int n){
   int XOR = 0 ;
   for (int i = 0; i < n; i++) {
      XOR = XOR ^ arr[i];
   }
   return XOR * 2;
}
int main(){
   int arr[3] = { 2, 4, 7 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The xor of the sum pair of elements of the array is\t"<<findSumXor(arr, n);
   return 0;
}

出力

The xor of the sum pair of elements of the array is 2

  1. C++合計配列パズル

    配列 同じデータ型の複数の要素を格納するデータ構造です。値のセット全体を一度に保存できます。ただし、その長さは事前に定義する必要があります。 この合計配列パズルでは、nと言う明確なサイズの配列A1が与えられます。このパズルを解くために、位置が使用されている要素を除く配列のすべての要素の合計を格納するS1という配列を作成します。たとえば、S1 [3]が計算されている場合、位置4の要素を除くA1のすべての要素の合計が求められます。 例- Array A1 = {1,2,3,4,6} Output S1 = {15,14,13,12,10} 説明 −合計配列を計算するには、初期配列の各要素を合計

  2. C ++の合計配列パズル?

    ここでは、配列に関連する1つの興味深い問題を確認します。 n個の要素を持つ配列があります。 n個の要素の別の配列を作成する必要があります。ただし、2番目の配列のi番目の位置は、i番目の要素を除く最初の配列のすべての要素の合計を保持します。そして、1つの制約は、この問題では減算演算子を使用できないことです。 減算演算を使用できれば、すべての要素の合計を取得し、最初の配列のi番目の要素を減算して、2番目の配列のi番目の場所に格納することで、この問題を簡単に解決できます。 ここでは、毎回要素を追加することでこれを解決し、0..n-1のiについては、位置iの要素を無視します。ポイントを得るためのア