কম্পিউটার টিউটোরিয়াল

C++-এ Nটি ডিস্টINCT সংখ্যা যাদের বিটওয়াইজ OR = K

দুটি পূর্ণসংখ্যা 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

  1. সি++ প্রোগ্রাম: n কি k সংখ্যার গুণফল হিসেবে লেখা সম্ভব কিনা যাচাই

  2. C++ ব্যবহার করে n-র চেয়ে ছোট বা সমান সব ফ্যাক্টোরিয়াল নম্বর বের করা

  3. যোগফল এবং GCD দিয়ে দুটি সংখ্যা বের করা (C++)

  4. পাইথনে Nটি ভিন্ন সংখ্যা বের করা যাদের বিটওয়াইজ OR হলো K