দুটি পূর্ণসংখ্যা N ও K দেওয়া আছে। এমন Nটি ডিস্টINCT পূর্ণসংখ্যা বের করতে হবে যাদের বিটওয়াইজ OR সমান K। সম্ভব না হলে -1 প্রিন্ট করুন।
উদাহরণ
N = 4, K = 6 → 6 0 1 2 N = 11, K = 6 → -1 (সম্ভব নয়)
অ্যালগরিদম
- যদি
K-র কোনো বিট ০ হয়, তবে সব সংখ্যাতে সেই বিট ০ হতে হবে। - শুধু
K-র সেট বিটগুলো পরিবর্তন করা যায়। সেট বিটের সংখ্যা =Bit_K। - সেট বিটগুলো দিয়ে
2^Bit_Kটি ডিস্টINCT সংখ্যা বানানো যায়। - একটি সংখ্যা
Kনিন, বাকিN-1টি সেট বিটের পারমিউটেশন থেকে নিন। - যদি
2^Bit_K < Nহয়, তবে -1 রিটার্ন করুন।
C++ প্রোগ্রাম
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 32
ll pow2[MAX];
bool visited[MAX];
vector<int> ans;
void power2() {
ll val = 1;
for (int i=0;i>= 1;
}
ans.push_back(val);
}
void solve(ll n, ll k) {
ans.push_back(k);
int cntK = countSetBits(k);
for (int i=0;i
আউটপুট: 6 0 1 2