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