এখানে আমরা একটি প্রোগ্রাম দেখব, যেখানে একটি সংখ্যা এবং অন্য একটি মান k দেওয়া থাকবে, এবং আমাদের যাচাই করতে হবে যে সংখ্যাটি k-এর ঘাত কিনা। কিন্তু এখানে বেস পরিবর্তন (base changing) পদ্ধতি ব্যবহার করতে হবে। ধরুন একটি সংখ্যা ২৭ এবং k = 3। বেস পরিবর্তন পদ্ধতিতে ২৭ হবে ১০০০₍₃₎। বেস পরিবর্তন করার পর যদি শুধু একবার ডিজিট ১ থাকে এবং বাকিগুলো ০ থাকে, তবে সংখ্যাটি k-এর ঘাত।
এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করতে হবে:
ধাপসমূহ −
- flag := false সংজ্ঞায়িত করুন।
- যখন number > 0, ধাপ ৩ থেকে ৬ পুনরাবৃত্তি করুন।
- digit := number mod k বের করুন।
- যদি digit > 1 হয়, তবে false রিটার্ন করুন।
- অন্যথায়, যদি digit ১ হয়, তবে যদি flag true হয়, তবে false রিটার্ন করুন, অন্যথায় flag := true করুন।
- number := number / k সেট করুন।
- true রিটার্ন করুন।
উদাহরণ
#include <iostream> #include <cmath> using namespace std; bool isPowerOfK(int num, int k) { bool flag = false; while (num > 0) { int digit = num % k; //get current digit in base k if (digit > 1) //if the digit is not 0 or 1, then it is not power of k return false; if (digit == 1) { if (flag) return false; flag = true; } num /= k; } return true; } int main() { int number = 27, K = 3; if(isPowerOfK(number, K)){ cout << number << " is power of " << K; } else { cout << number << " is not power of " << K; } }আউটপুট
27 is power of 3