এই সমস্যায়, আমাদের দুটি ইন্টিজার 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