C++の範囲からのペアの最大XOR値
範囲[L、R]が与えられた場合、2つの整数のすべての可能な選択肢の中でXORが最大になるように、この範囲内の2つの整数を見つける必要があります
指定された範囲がL=1およびR=21の場合、-31は15および16のXORであり、範囲内で最大であるため、出力は31になります。
アルゴリズム
1. Calculate the (L^R) value 2. From most significant bit of this value add all 1s to get the final result
例
#include <bits/stdc++.h> using namespace std; int getMaxXOR(int L, int R){ int LXR = L ^ R; int msbPos = 0; while (LXR) { msbPos++; LXR >>= 1; } int maxXOR = 0; int two = 1; while (msbPos--) { maxXOR += two; two <<= 1; } return maxXOR; } int main(){ int L = 1; int R = 21; cout << "Result = " << getMaxXOR(L, R) << endl; return 0; }
Result = 31
-
C++の配列内のペアの最大ビット単位AND値
問題の説明 n個の正の要素の配列が与えられます。配列から要素の任意のペアによって生成された最大ビット単位のAND値を見つける必要があります。 例 入力配列が{10、12、15、18}の場合、ビット単位のANDの最大値は12です。 アルゴリズム 単一ビットに対するビット単位のAND演算の結果は、両方のビットが1のときに最大になります。このプロパティを考慮すると- MSBから開始して、設定値を持つ配列の要素が2つ以上あるかどうかを確認します はいの場合、そのMSBはソリューションの一部になり、結果に追加されます。そうでない場合は、そのビットを破棄します 同様に、ビット位置をMSBからLS
-
C++での最小XOR値ペア
問題の説明 整数の配列が与えられます。最小のXOR値を持つ配列でペアを見つけます 例 If arr[] = {10, 20, 30, 40} then minimum value pair will be 20 and 30 as (20 ^ 30) = 10. (10 ^ 20) = 30 (10 ^ 30) = 20 (10 ^ 40) = 34 (20 ^ 30) = 10 (20 ^ 40) = 60 (30 ^ 40) = 54 アルゴリズム 指定された配列のすべてのペアを生成し、それらの値のXORを計算します 最小XOR値を返します 例 #include <bits/s