在这里,我们将看到一个程序,如果给定一个数字,还给定另一个值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