在这里,我们将看到一个程序,如果给定一个数字,还给定另一个值k,我们必须检查该数字是否为k的幂。但是我们必须执行基础更改方法来解决此问题。假设一个数字是27,且k =3。则通过基数更改方法,该27将为10003。在更改基数之后,如果仅出现一个数字1,而其他数字为0,则该数字为k的幂。 。
要解决此问题,我们将按照以下步骤操作。
步骤 -
定义标志:=假
当数字> 0时,重复步骤3至6
查找数字:=数字mod k
如果数字> 1,则返回false
否则,如果digit为1,则如果标志为True,则返回false,否则返回flag == true。
设置数字:=数字/ 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