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

C++-এ x^y এবং y^x এর মধ্যে বড়টি বের করুন

দুটি সংখ্যা x এবং y দেওয়া আছে। x^y এবং y^x — দুটোর মধ্যে কোনটি বড় সেটা বের করতে হবে।

উদাহরণ

ইনপুট: x = 4, y = 5

  • x^y = 4^5 = 1024
  • y^x = 5^4 = 625

আউটপুট: 1024 (অর্থাৎ 4^5 বড়)

গাণিতিক সমাধান: লগারিদম

সরাসরি ঘাত ক্যালকুলেট করলে ওভারফ্লো। লগ নিন:

  • ln(x^y) = y · ln(x)
  • ln(y^x) = x · ln(y)

দুটো কমপেয়ার করুন: y·ln(x) vs x·ln(y)। বড়টোই বড় ঘাত।

C++ প্রোগ্রাম

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

int main() {
    double x = 3, y = 7;
    double ylogx = y * log(x);
    double xlogy = x * log(y);
    if (ylogx > xlogy)
        cout << x << "^" << y;
    else if (ylogx < xlogy)
        cout << y << "^" << x;
    else
        cout << "None";
    cout << " has greater value";
    return 0;
}

আউটপুট

3^7 has greater value

ব্যাখ্যা

  • log() = ন্যাচারেল লগ (বেস e)।
  • 3^7 = 2187, 7^3 = 343 → ৩^৭ বড়।
  • ডাবল প্রিসিশন যথেষ্ট বড় রেঞ্জের জন্য।
  • বিরল কেস: x=2, y=4 → 2^4=16, 4^2=16 (সমান)।

প্যাটার্ন (ইন্টিজার বেস)

  • x < y এবং x ≥ 3 হলে সাধারণত x^y > y^x।
  • (2,3): ২³=৮, ৩²=৯ → ৩^২ বড় (এক্সসেপশন)।
  • (2,4): সমান।
  • x=1: ১^y=১, y^1=y → y^x বড় (y>1 হলে)।

কমপ্লেক্সিটি

  • টাইম: O(1) — কনস্ট্যান্ট টাইম ম্যাথ অপারেশন।
  • স্পেস: O(1)।
  1. সর্বনিম্ন সংখ্যা K খুঁজে বের করা যাতে K % p = 0 এবং q % K = 0 C++-তে

  2. সি++ প্রোগ্রাম: O(n) টাইম ও O(1) এক্সট্রা স্পেসে ডুপ্লিকেট খুঁজে বের করা (Set 1)

  3. C++ ব্যবহার করে A এবং B-এর মাঝপথে N জ্যামিতিক গড় বের করা

  4. C++ ব্যবহার করে A এবং B-এর মাঝপথে N সমান্তর গড় বের করা