C++ 中给定范围内的最大位运算 AND 对


问题陈述

给定范围 [L, R],任务是找到一对 (X, Y) 使得 L ≤ X < Y ≤ R,且 X & Y 在所有可能的对中是最大的,然后打印找到的对的按位 AND。

示例

如果 L = 1,R = 10,则最大的按位 AND 值为 8,可如下形成:-

1000 # Binary representation of 8
Bitwise AND
1001 # Binary representation of 9
----
1000 # Final result

算法

从 L 迭代到 R,检查每一对的按位 AND,并在最后打印最大值

示例

现在让我们来看一个示例:-

 实时演示

#include <bits/stdc++.h>
using namespace std;
int getMaxBitwiseAndValue(int L, int R) {
   int maxValue = L & R;
   for (int i = L; i < R; ++i) {
      for (int j = i + 1; j <= R; ++j) {
         maxValue = max(maxValue, (i & j));
      }
   }
   return maxValue;
}
int main() {
   int L = 1, R = 10;
   cout << "Maximum value = " << getMaxBitwiseAndValue(L, R) << endl;
   return 0;
}

输出

Maximum value = 8

更新时间: 31-12-2019

91 次观看

启动您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.