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

C++-এ pow(x, y)-এর জন্য ইটেরেটিভ O(Log y) ফাংশন

এই সমস্যায়, আমাদের দুটি ইন্টিজার x এবং y দেওয়া আছে। আমাদের কাজ হল একটি ফাংশন তৈরি করা যা pow(x,y)-এর সমান হবে ইটেরেটিভ পদ্ধতিতে যা O(Log y) টাইম কমপ্লেক্সিটিতে কাজ করবে।

কয়েকটি উদাহরণ দিয়ে সমস্যাটি বুঝতে পারি,

ইনপুট

x = 7, y = 3

আউটপুট

343

pow(x,y)-এর জন্য ইটেরেটিভ ফাংশনটি ইটারেট করবে এবং y বিজোড় হলে x দিয়ে গুন করে রেজাল্ট আপডেট করবে এবং প্রতি ইটারেশনে x কে x^2-এ আপডেট করবে।

সমাধানের ইমপ্লিমেন্টেশন দেখানোর প্রোগ্রাম

উদাহরণ

#include <iostream>
using namespace std;

void calcPower(int x, unsigned int y) {
    int result = 1;
    while (y > 0) {
        if (y & 1)
            result *= x;
        y = y >> 1;
        x = x * x;
    }
    cout << result;
}

int main() {
    int x = 7;
    unsigned int y = 3;
    cout << x << " raised to " << y << " is ";
    calcPower(x, y);
    return 0;
}

আউটপুট

7 raised to 3 is 343
  1. C++-এ জটিল সংখ্যার জন্য asin() ফাংশন

  2. C++-এ inline কীওয়ার্ড কখন ব্যবহার করা উচিত?

  3. C++-এ log() ফাংশন

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