একটি সংখ্যা n দেওয়া থাকলে, সবচেয়ে বড় সেট বের করতে হবে যাতে সেটের সব উপাদানের বিটওয়াইজ OR = n হয়।
উদাহরণ
ইনপুট: n = 7 (বাইনারি: 111)
আউটপুট: 0 1 2 3 4 5 6 7 (সব সংখ্যার OR = 7)
অ্যালগরিদম
- ০ থেকে
nপর্যন্ত লুপ চালান। - যদি
(i | n) == nহয়, তবেiসেটে রাখুন। - কারণ
i-র সেট বিটগুলোn-র সেট বিটের সাবসেট হলে OR = n হবে।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
void printBitwiseOrSet(int n) {
vector v;
for (int i = 0; i <= n; i++) {
if ((i | n) == n) v.push_back(i);
}
for (int x : v) cout << x << ' ';
cout << endl;
}
int main() {
int n = 7;
printBitwiseOrSet(n); // 0 1 2 3 4 5 6 7
return 0;
}
আউটপুট
0 1 2 3 4 5 6 7