Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่า Bitwise AND สูงสุดของคู่ในช่วงที่กำหนดใน C++


โจทย์

ได้รับช่วง [L, R] งานคือหาคู่ (X, Y) ที่ทำให้ L ≤ X < Y ≤ R และ X & Y มีค่าสูงสุด среди ทุกคู่ที่เป็นไปได้ แล้วพิมพ์ค่า Bitwise AND ของคู่นั้น

ตัวอย่าง

ถ้า L = 1 และ R = 10 ค่า Bitwise AND สูงสุดคือ 8 ซึ่งได้จาก

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

อัลกอริทึม

วนลูปจาก L ถึง R และตรวจสอบ Bitwise 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