यहां हम एक प्रोग्राम देखेंगे, यदि एक संख्या दी गई है, एक और मान k भी दिया गया है, हमें जांचना है कि संख्या k की घात है या नहीं। लेकिन हमें इस समस्या को हल करने के लिए बेस बदलने की विधि का उपयोग करना होगा। मान लीजिए एक संख्या 27 है, और k = 3। तब बेस बदलने की विधि द्वारा, 27 होगा 10003। यहां बेस बदलने के बाद यदि अंक 1 का केवल एक घटना है, और अन्य 0 हैं, तो संख्या k की घात है।
इस समस्या को हल करने के लिए, हम इन चरणों का पालन करेंगे।
चरण −
- फ्लैग := फाल्स परिभाषित करें
- जब तक संख्या > 0, चरण 3 से 6 दोहराएं
- अंक := संख्या मोड k ढूंढें
- यदि अंक > 1, तो फाल्स लौटाएं
- अन्यथा जब अंक 1 हो, तो यदि फ्लैग सत्य है, तो फाल्स लौटाएं, अन्यथा फ्लैग := सत्य।
- संख्या := संख्या / k सेट करें।
- सत्य लौटाएं
उदाहरण
#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