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

y mod (2^x) এর মান বের করা (C++)


সমস্যা বিবরণ

দুটি মান x এবং y দেওয়া হয়েছে। আমাদের কাজ হল y mod (2^x) এর মান বের করা।

উদাহরণ

ইনপুট: x = 2, y = 19
আউটপুট: 3
ব্যাখ্যা: 19 % 2² = 19 % 4 = 3

সমাধানের পদ্ধতি

সাধারণ পদ্ধতিতে pow() ফাংশন দিয়ে 2^x বের করে মডুলাস নেওয়া যায়। কিন্তু বড় x-এর জন্য লগারিদম ও বিট অপারেশন দিয়ে অপ্টিমাইজ করা যায়।

  • যদি log₂(y) < x হয়, তবে ফলাফল y।
  • যদি x > 63 হয়, তবে ওভারফ্লো হওয়ায় ফলাফল y।
  • অন্যথায় y % (1 << x) বের করা।

প্রোগ্রাম উদাহরণ

#include <bits/stdc++.h>
using namespace std;

long long findModVal(long long y, int x) {
    if (log2(y) < x) return y;
    if (x > 63) return y;
    return (y % (1LL << x));
}

int main() {
    long long y = 82829;
    int x = 12;
    cout << "y mod 2^x এর মান: " << findModVal(y, x);
    return 0;
}

আউটপুট

y mod 2^x এর মান: 909
  1. ট্রির প্রতিটি সারির সর্বোচ্চ মান C++-এ

  2. ট্রির শেষ সারির বামপাশের মান C++-এ

  3. C++-এ পাওয়ার (pow) ফাংশন লিখুন

  4. ক্যারেক্টারের ASCII মান বের করার C++ প্রোগ্রাম