使用C ++中的基数更改方法检查数字是否为k的幂

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